先看一下绘制三角形的思维导图,流程是从上至下依次执行。
废话不多说,直接上代码。使用的语言是C++
int main(int argc,char *argv[])
{
//初始化GLUT库,这个函数只是传说命令参数并且初始化glut库
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL);
//GLUT窗口大小、窗口标题
glutInitWindowSize(800, 600);
glutCreateWindow("Triangle");
//注册重塑函数
glutReshapeFunc(changeSize);
//注册显示函数
glutDisplayFunc(RenderScene);
GLenum status = glewInit();
if (GLEW_OK != status) {
printf("GLEW Error:%s\n",glewGetErrorString(status));
return 1;
}
setupRC();
glutMainLoop();
return 0;
}
void changeSize(int w,int h)
{
glViewport(0, 0, w, h);
}
void setupRC()
{
//设置清屏颜色(背景颜色)
glClearColor(1.0f, 0.3f, 0.7f, 1);
shaderManager.InitializeStockShaders();
//指定顶点
GLfloat vVerts[] = {
-0.6f,0.0f,0.0f,
0.4f,0.0f,0.0f,
0.0f,0.5f,0.0f
};
batch.Begin(GL_TRIANGLES, 3);
batch.CopyVertexData3f(vVerts);
batch.End();
}
void RenderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT|GL_STENCIL_BUFFER_BIT);
GLfloat vRed[] = {1.0,0.0,1.0,1f};
//单元着色器
shaderManager.UseStockShader(GLT_SHADER_IDENTITY,vRed);
//绘制
batch.Draw();
//交换缓冲区
glutSwapBuffers();
}