您的位置:首页 > 运维架构

OpenGL基础知识(三)

2011-12-30 00:28 274 查看
今天讲一下如何在OpenGL中绘制一些简单的图形。
现在把OpenGL基础知识(二)中编写的程序做一下简单的修改,源代码如下:

#include <GL/glut.h>

void RenderScene(void)

{

glClear(GL_COLOR_BUFFER_BIT); //清除颜色

glColor3f(0.0f,1.0f,0.0f); //设置颜色为绿色

glRectf(-25.0f,25.0f,25.0f,-25.0f); //绘制边长为50的矩形

glFlush(); //刷新

}

//当窗口大小变化时调用

void ChangeSize(GLsizei w,GLsizei h)

{

GLfloat aspectRatio;

if(0 == h)

h = 1;

//设置视口大小

glViewport(0,0,w,h);

//重置坐标系

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

//建立裁剪区

aspectRatio = (GLfloat)w / (GLfloat)h;

if(w <= h)

glOrtho(-100.0,100.0,-100.0/aspectRatio,100/aspectRatio,1.0,-1.0);

else

glOrtho(-100.0*aspectRatio,100.0*aspectRatio,-100.0,100.0,1.0,-1.0);

glMatrixMode(GL_MODELVIEW);

glLoadIdentity();

}

//设置渲染

void SetupRC(void)

{

glClearColor(0.0f,0.0f,1.0f,1.0f);

}

int main(int argc,char* argv[])

{

glutInit(&argc,argv);

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

glutCreateWindow("OpenGL Sample");

glutDisplayFunc(RenderScene);

glutReshapeFunc(ChangeSize);

SetupRC();

glutMainLoop();

return 0;

}

以下是该程序的运行截图:



现在对以上的代码做简单的讲解。这个程序主要是绘制了一个蓝色背景的窗口,然后在窗口里面绘制了一个边长为50的绿色矩形。

glRectf函数就是用来绘制填充矩形的。glutDisplayFunc函数用来设置当窗口大小改变时运行ChangeSize函数。当窗口大小改变时需要重置坐标系统,并且视口也会被调整大小。

......
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: