您的位置:首页 > 编程语言

openGL示例代码及注释(一)

2013-03-23 18:18 281 查看
在网上下了一点代码,自己加了一些注释:

#include <stdlib.h>
#define GLUT_DISABLE_ATEXIT_HACK
#include <GL/glut.h>

void display(void)
{
/* 清除所有的像素*/
glClear (GL_COLOR_BUFFER_BIT);
/* 绘制一个对角顶点坐标分别为(0.25, 0.25, 0.0) 和(0.75, 0.75, 0.0) 的白色多边形
*(矩形) */
glColor3f (1.0, 0.0, 0.0);
glBegin(GL_POLYGON);//glBegin支持的方式除了GL_POINTS和GL_LINES,还有GL_LINE_STRIP,GL_LINE_LOOP,GL_TRIANGLES,GL_TRIANGLE_STRIP,GL_TRIANGLE_FAN
//适当了解一些,当然,确认顶点的方式也有很多种:glVertex2d glVertex2f glVertex3f glVertex3fv等等~~~~
glVertex3f (0.25, 0.25, 0.0);
glVertex3f (0.75, 0.25, 0.0);
glVertex3f (0.75, 0.75, 0.0);
glVertex3f (0.25, 0.75, 0.0);
glEnd();
glBegin(GL_LINES);
glVertex2d(0.0,0.0);
glVertex2d(5.0,5.0);
glEnd();

/* 不等待!立刻开始处理在缓冲区中的OpenGL函数调用*/
glFlush ();//保证前面的OpenGL命令立即执行(而不是让它们在缓冲区中等待)。其作用跟fflush(stdout)类似。
}

void init (void)
{
/* 指定清除颜色*/
glClearColor (0.0, 0.0, 0.0, 0.0);
/* 初始化视景体*/
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
}

/* 指定窗口的初始大小和位置以及显示模式(单缓存和RGBA模式)
* 打开一个标题为“hello”的窗口,调用初始化函数
* 注册用于显示图形的回调函数,进入主循环并处理事件
*/
int main(int argc, char** argv)
{
glutInit(&argc, argv); /*初始化GLUT并处理命令行参数*/

//设置显示方式,前面是缓冲的选择,有GLUT_SINGLE-使用单缓冲区  GLUT_DOUBLE-双缓冲区
//后面的是颜色表示的方式:GLUT_RGB使用RGB颜色 GLUT_INDEX使用索引颜色
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);

glutInitWindowSize (600, 600); /*指定窗口的大小,单位为像素*/
glutInitWindowPosition (200, 200); /*指定窗口左上角在屏幕上的位置*/

glutCreateWindow ("Window-name"); /*使用一个OpenGL场景创建一个窗口*/
//注意的是:窗口创建之后,并不能立即显示在屏幕上,需要调用glutMainLoop()才能
init ();
glutDisplayFunc(display);//暂时理解成:设置一个函数,当需要进行画图时,这个函数就会被调用
glutMainLoop();//进行消息循环(暂时这么理解吧)

return 0; /* ANSI C 要求main()返回一个int值*/
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: