OpenGL
16 Apr 2014最近开始有点想学习OpenGL,第一个OpenGL程序,记录一下
在看OpenGL蓝皮书,第一个程序就是显示一个三角形。
需要GLTools这个库的支持
在OS X 10.9系统下glut很多接口都已经过时了
#include#include #include <glut/glut.h> GLBatch triangleBatch; GLShaderManager shaderManager; void ChangeSize(int w, int h) { glViewport(0, 0, w, h); } void SetupRC() { glClearColor(0.0f, 0.0f, 1.0f, 1.0f); shaderManager.InitializeStockShaders(); GLfloat vVerts[] = { -0.5f, 0.0f, 0.0f, 0.5f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f }; triangleBatch.Begin(GL_TRIANGLES, 3); triangleBatch.CopyVertexData3f(vVerts); triangleBatch.End(); } void RenderScene() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT); GLfloat vRed[] = { 1.0f, 0.0f, 0.0f, 1.0f }; shaderManager.UseStockShader(GLT_SHADER_IDENTITY, vRed); triangleBatch.Draw(); glutSwapBuffers(); } int main(int argc, char *argv[]) { gltSetWorkingDirectory(argv[0]); glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_STENCIL); glutInitWindowSize(800, 600); glutCreateWindow("三角形"); glutReshapeFunc(ChangeSize); glutDisplayFunc(RenderScene); GLenum err = glewInit(); if (GLEW_OK != err) { return 1; } SetupRC(); glutMainLoop(); return 0; } </pre> </section>