#include<GL/glut.h> //GLUT是OpenGL实用工具包,自动包含了<GL/gl.h>和<GL/glu.h>,编程时不必再次包含它们。
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT); //清除所有的像素
glColor3f(0.0,1.0,0.0); //绘制颜色(绿色),函数名glColor3f中的3代表三个参数,f代表参数类型为GLfloat型,下同
glBegin(GL_POLYGON); //开始绘制一个多边形(矩形)
glVertex3f(0.25,0.25,0.0); //顶点A(坐标系z轴为0)
glVertex3f(0.75,0.25,0.0); //顶点B
glVertex3f(0.75,0.75,0.0); //顶点C
glVertex3f(0.25,0.75,0.0); //顶点D
glEnd(); //绘制结束
glFlush(); //立刻开始处理保存在缓冲区中的OpenGL函数调用
}
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);
}
//为了最大限度地提高效率,那些只需调用一次的操作(设置背景颜色和坐标系统)被放置到函数init()中
//渲染(和重新渲染)场景的操作被放置到函数display()中,它是注册的GLUT显示回调函数
int main(int argc,char** argv) //注意参数
{
glutInit(&argc,argv); //初始化GLUT并处理命令行参数
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB); //指定模式:单缓存OR双缓存;RGBA模式OR颜色索引模式
glutInitWindowSize(250,250); //指定窗口大小(像素)
glutInitWindowPosition(100,100); //指定窗口左上角在屏幕上的位置
glutCreateWindow("Hello"); //使用OpenGL场景创建一个窗口,参数为窗口名称
init(); //调用初始化函数
glutDisplayFunc(display); //注册用于显示图形的回调函数,每当GLUT认为需要重绘窗口时,都会执行该函数,故应将重绘场景所需调用的函数都放到显示回调函数中。
glutMainLoop(); //进入主循环并处理事件,此时创建的所有窗口都会显示出来,被渲染到这些窗口中的内容也将显示出来,程序开始处理事件,注册的显示回调函数被触发
return 0; //ANSI C要求函数main()返回一个int值
}
运行结果,如下图: