设为首页 加入收藏

TOP

glsl着色器(c语言)(二)
2014-11-23 18:02:47 来源: 作者: 【 】 浏览:20
Tags:glsl 着色 语言
, &charsWritten, infoLog); printf("%s\n",infoLog); free(infoLog); } glUseProgram(programHandle); } void initVBO() { // Create and populate the buffer objects GLuint vboHandles[2]; GLuint positionBufferHandle, colorBufferHandle; glGenBuffers(2, vboHandles); positionBufferHandle = vboHandles[0]; colorBufferHandle = vboHandles[1]; //绑定VBO以供使用 glBindBuffer(GL_ARRAY_BUFFER,positionBufferHandle); //加载数据到VBO glBufferData(GL_ARRAY_BUFFER,12 * sizeof(float), positionData,GL_STATIC_DRAW); //绑定VBO以供使用 glBindBuffer(GL_ARRAY_BUFFER,colorBufferHandle); //加载数据到VBO glBufferData(GL_ARRAY_BUFFER,9 * sizeof(float), colorData,GL_STATIC_DRAW); glGenVertexArrays(1,&vaoHandle); glBindVertexArray(vaoHandle); glEnableVertexAttribArray(0);//顶点坐标 glEnableVertexAttribArray(1);//顶点颜色 //调用glVertexAttribPointer之前需要进行绑定操作 glBindBuffer(GL_ARRAY_BUFFER, positionBufferHandle); glVertexAttribPointer( 0, 3, GL_FLOAT, GL_FALSE, 0, NULL ); glBindBuffer(GL_ARRAY_BUFFER, colorBufferHandle); glVertexAttribPointer( 1, 3, GL_FLOAT, GL_FALSE, 0, NULL ); } void init() { //初始化glew扩展库 glewInit(); initShader(); initVBO(); glClearColor(0.0,0.0,0.0,0.0); //glShadeModel(GL_SMOOTH); } void display() { glClear(GL_COLOR_BUFFER_BIT |GL_DEPTH_TEST); ////绘制一个三角形(使用普通方法) //glBegin(GL_TRIANGLES); //glColor3f(0.0f,1.0f,0.0f); //glVertex3f(0.0f,1.0f,0.0f); //glColor3f(0.0f,1.0f,0.0f); //glVertex3f(-1.0f,-1.0f,0.0f); //glColor3f(0.0f,0.0f,1.0f); //glVertex3f(1.0f,-1.0f,0.0f); //glEnd(); //使用VAO、VBO绘制 glBindVertexArray(vaoHandle); glDrawArrays(GL_TRIANGLES,0,3); glBindVertexArray(0); //传递矩阵。 matrixLocation= glGetUniformLocation(programHandle, "Matrix"); glUniformMatrix4fv(matrixLocation, 1, GL_TRUE, matrix); glutSwapBuffers(); glutPostRedisplay(); } int main(int argc,char** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(600,600); glutInitWindowPosition(100,100); glutCreateWindow("GLSL Test : Draw a triangle"); init(); glutDisplayFunc(display); glutMainLoop(); return 0; } 使用的库可至我的资源页下载
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇skip list跳表C语言代码。 下一篇C指针原理(87)-helloworld的C程..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: