- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【2017年整理】openGL介绍
openGL简单介绍
openGL(Open Graphics Library)从本质上说,它是一个3D图形和模型库,具有高度的移植性。我们可以将openGL看做是一个C运行时的函数库,这个函数库可以帮助我们绘制二维或三维的图像。
静态链接库和动态链接库
静态库:编译时代码编译进exe中,会使得程序体积非常庞大。不利于模块的共享优点:不会有dll hell的问题。好像“企业间的吞并”动态库:dll。代码在dll中,其他程序调用dll中的代码,多个程序可以共享。缺点:dll hell(dll地狱),版本问题。#include windows.h
#include gl/glut.h
void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT); //用当前的清除颜色清除窗口
glFlush(); //刷新绘图命令
}
void SetupRC(void) //设置渲染状态
{
glClearColor(0.0f,0.0f,1.0f,1.0f);
}
//void main(void)
int main(int argc,char* argv[])
{
glutInit(argc,argv); //对GLUT函数库进行初始化
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGBA); //创建窗口时使用哪种类型的显示模式
glutCreateWindow(simple); //创建glut窗口
glutDisplayFunc(RenderScene); //当窗口被绘制时,调用RenderScene函数
SetupRC(); //执行渲染之前应完成的所有OpenGL初始化工作
glutMainLoop(); //启动GLUT框架的运行
return 0;
}
使窗口绘制的图形不变形
首先,在窗口上绘制一个红色的矩形
glColor3f(1.0f,0.0f,0.0f); //设置绘图颜色
glRectf(-25.0f,25.0f,25.0f,-25.0f); //绘制填充矩形
其次,在主函数中添加
glutReshapeFunc(ChangeSize); //当窗口大小改变时,重新设置坐标系统
ChangeSize函数的实现:
void ChangeSize(GLsizei w,GLsizei h)
{ GLfloat aspectRatio;
if(h==0) h=1; //防止被0所除
glViewport(0,0,w,h);
//重置投影矩阵堆栈
glMatrixMode(GL_PROJECTION);
glLoadIdentity(); //在进行变换前把当前矩阵设置为单位矩阵
aspectRatio=(GLfloat)w/(GLfloat)h;
if(w=h)
glOrtho(-100.0,100.0,-100/aspectRatio,100.0/aspectRatio,1.0,-1.0);
else
glOrtho(-100.0*aspectRatio,100.0*aspectRatio,-100,100.0,1.0,-1.0);
//重置模型视图堆栈
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
在窗口中绘制图形
基本框架: glBegin(图元) ;
glVertex3f(x,y,z);
……
glEnd();
其中,图元可以是点、线、三角形、四边形等。
glVertex3f(x,y,z);表示一个顶点。
如:绘制一个点
glBegin(GL_POINTS);
glVertex3f(0.0f,0.0f,0.0f);
glEnd();
常用的图元有:
GL_POINTS:绘制点
GL_LINES:绘制直线
GL_LINE_STRIP:绘制线带
GL_LINE_LOOP:绘制线环
GL_TRIANGLES:绘制三角形
GL_TRIANGLE_STRIP:绘制三角形带
GL_TRIANGLE_FUN:绘制三角形扇
GL_QUADS:绘制四边形
如:绘制一个点组成的螺旋线
首先,添加头文件和定义符号 常量
#include math.h
#define GL_PI 3.1415f
其次,绘制螺旋线
void RenderScene(void)
{
GLfloat x,y,z,angle;
glClear(G
您可能关注的文档
- 【2017年整理】13、各种机械的安全操作规程.doc
- 【2017年整理】13工业炉窑砌筑工程施工技术.doc
- 【2017年整理】14.金属的塑性变形习题.doc
- 【2017年整理】15#楼屋面防水方案.doc
- 【2017年整理】14(三)电力一班36号蔡承发降低电网损耗论文修订后.doc
- 【2017年整理】15000KW硫酸余热发电工艺说明.doc
- 【2017年整理】14.10温州事业单位公文改错.doc
- 【2017年整理】16中医规培—中医外科学习题7.doc
- 【2017年整理】16年6月考试《土力学与地基基础(二)》考核作业答案.doc
- 【2017年整理】16春北航《技术经济学》在线作业一.doc
文档评论(0)