olorData, GL_STATIC_DRAW); ///////////////////////////////////////// glGenVertexArrays(1, &vaoHandle); glBindVertexArray(vaoHandle); ////////////////////////////////////// glEnableVertexAttribArray(0); glEnableVertexAttribArray(1); glBindBuffer(GL_ARRAY_BUFFER, positionBufferHandle); glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, NULL); glBindBuffer(GL_ARRAY_BUFFER, colorBufferHandle); glVertexAttribPointer(1, 4, GL_FLOAT, GL_FALSE, 0, NULL); } //////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// void SetupRC() { glewInit(); SetupShader(); InitVBO(); glClearColor(1.0, 0.0, 0.0, 1.0); //////////////////////////////////////// glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glFrontFace(GL_CW); } ////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////// //glGet**Location()系列函数需在glLinkProgram之后使用,切记! //浮点值在shaderzhong 不会自己转换,需注意写法。 // //////////////////////////////////////////// void RenderScene() { glClear(GL_COLOR_BUFFER_BIT); glUseProgram(programHandle); offsetUniformLocation =glGetUniformLocation(programHandle, "offset"); perspectiveMatrixUniformLocation =glGetUniformLocation(programHandle, "perspectiveMatrix"); perspectiveFrustum( M, -1.0, 1.0, 1.0, -1.0, 1.0, 3.0); //计算矩阵M glUniform2f(offsetUniformLocation, 0.5, 0.5); //此处改为0.0, 0.0则仅显示一正方形,看不到透视效果。 glUniformMatrix4fv(perspectiveMatrixUniformLocation, 1, GL_TRUE, M); glBindVertexArray(vaoHandle); glDrawArrays(GL_TRIANGLES, 0, 36); glBindVertexArray(0); glutSwapBuffers(); glutPostRedisplay(); } void keyBoard(unsigned char key, int x, int y) { if(key ==GLUT_KEY_F1) exit(0); } int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE |GLUT_RGBA |GLUT_DEPTH); glutInitWindowSize(800, 600); glutInitWindowPosition(0, 0); glutCreateWindow("fourth :perspective "); SetupRC(); glutDisplayFunc(RenderScene); glutSpecialFunc(keyBoard); glutMainLoop(); return 0; }
vmath可至我的资源
下载
|