#include <GLTools.h>
#include <GLShaderManager.h>
#define FREEGLUT_STATIC
#include <GL/glut.h>
GLShaderManager shader;
GLBatch batch;
void changeSize(int w, int h)
{
//重新设置视口
glViewport(0, 0, w, h);
}
void RenderScene()
{
//设置背景颜色
glClear(GL_COLOR_BUFFER_BIT);
GLfloat vRed[] = {1.0, 0.0, 0.0, 1.0};
shader.UseStockShader(GLT_SHADER_IDENTITY, vRed);
batch.Draw();
glutSwapBuffers();
}
void SetupRC()
{
//设置背景色
glClearColor(0.0, 0.0, 1.0, 1.0);
//初始化着色器
shader.InitializeStockShaders();
//设置三角形顶点并放入批次对象
GLfloat ver[] = {-0.5, 0.0, 0.0,
0.5, 0.0, 0.0,
0.0, 0.5, 0.0};
batch.Begin(GL_TRIANGLES, 3);
batch.CopyVertexData3f(ver);
batch.End();
}
int main(int argc, char *argv[])
{
//初始化glut库
glutInit(&argc, argv);
//初始化显示模式
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
//设置窗口尺寸,必须先设置尺寸再创建窗口
glutInitWindowSize(800, 600);
//创建窗口
glutCreateWindow("trangle");
//视口重绘回调函数
glutReshapeFunc(changeSize);
//显示重回回调函数
glutDisplayFunc(RenderScene);
//初始化glew库
GLenum ret = glewInit();
if (GLEW_OK != ret)
{
fprintf(stderr, "glew error %s\n", ret);
return 1;
}
//完成初始化工作
SetupRC();
//事件循环
glutMainLoop();
return 0;
}
这个示例基于《OpenGL超级宝典(第5版)》这本书