初学OpenGL的时候,往往拿着一大堆图形学算法书狂啃,但是不知道怎么去运行书上的伪代码,见识不到OpenGL的神奇,让人很沮丧的。这篇文章从无到有一步一步实现一个简单的OpenGL实例。
OpenGL环境配置我就不说了。
1、打开VC++,新建一个window32 application空白项目
2、在项目中添加下面的代码
#include <windows.h>
#include <gl/glut.h>
void display(void){
glClear(GL_COLOR_BUFFER_BIT);// 将buffers设置为预先设定的值。
//参数GL_COLOR_BUFFER_BIT表明现在可以向buffer中写入颜色值
glColor3f(1.0,1.0,1.0);//指定了当前绘图的颜色
glBegin(GL_POLYGON);//glBegin和glEnd是一一对应的。
//这两个函数限制了一组或多组图元的顶点定义。
//在这两个函数中间就是你所绘制的由多个顶点组成的图元。
//函数的参数表明了所绘制的图元的类型
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();
glFlush();//glFlush清空所有buffer,使所有发出的命令能在规定的时间内运行
}
void init(void){
glClearColor(0.0,0.0,0.0,0.0);//设置窗口将被清除成的颜色
//glClear完成实际的窗口清除工作,每次都会将窗口清除成glClearColor指定的颜色
glMatrixMode(GL_PROJECTION);//用来确定所创建窗口的显示模式。
// 本例中的参数GLUT_SINGLE 指定单缓存窗口,这也是缺省模式,
// 对应的模式为GLUT_DOUBLE 双缓存窗口。
// 参数GLUT_RGB指定颜色RGBA模式,这也是缺省模式,
// 对应的模式为GLUT_INDEX 颜色索引模式窗口。
glLoadIdentity();//将当前的用户坐标系的原点移到了屏幕中心:类似于一个复位操作
glOrtho(0.0,1.0,0.0,1.0,-1.0,1.0);//指定了OpenGL在绘制最终图像时所使用的坐标系统
}
int main(int argc,char **argv){
glutInit(&argc,argv);//对GLUT进行初始化,并处理所有的命令行参数
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);//指定了是使用RGBA模式还是颜色索引模式
glutInitWindowSize(250,250);//指定窗口大小
glutInitWindowPosition(100,100);//指定窗口位置
glutCreateWindow("Hello");//创建窗口,其中的字符串是窗口的名称
init();
glutDisplayFunc(display);//显示回调函数,每当GLUT确定一个窗口需要重新显示时调用
glutMainLoop();//程序启动,创建的窗口在此可见,回调函数被触发,一直循环下去
return 0;
}
3、链接库
4、可能会报一个错误:unresolved external symbol _WinMain@16 ,解决办法参考:报错解决办法
5、编译运行。效果如下