设为首页 加入收藏

TOP

GLSL透视矩阵(C语言)(二)
2014-11-23 18:58:07 来源: 作者: 【 】 浏览:21
Tags:GLSL 透视 矩阵 语言
, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 1.0f}; //////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////// void SetupShader() { char *renderer; char *vender; char *version; char *glslVersion; ////////////////////// char *vs, *fs; char *vv, *ff; ////////////////////// renderer =glGetString(GL_RENDERER); vender =glGetString(GL_VENDOR); version =glGetString(GL_VERSION); glslVersion =glGetString(GL_SHADING_LANGUAGE_VERSION); printf("*****************************************************\n"); printf("graphic card:\t%s \n", renderer); printf("graphic company:\t%s \n", vender); printf("openGL version:\t%s \n", version); printf("GLSL version:\t %s \n", glslVersion); printf("*****************************************************\n"); /////////////////////////////////////////////////////////////////////// vShader =glCreateShader(GL_VERTEX_SHADER); vs =readText("shader/perspective.vert"); //printf("%s\n",vs); vv =vs; if(vShader ==0) { printf("Error: fail to create shader!"); exit(1); } glShaderSource(vShader, 1, &vv, NULL); glCompileShader(vShader); free(vs); glGetShaderiv(vShader, GL_INFO_LOG_LENGTH, &infoLogLength); if(infoLogLength >0) { infoLog =(char *)malloc(infoLogLength); glGetShaderInfoLog(vShader, infoLogLength, &charWritten, infoLog); printf("%s\n",infoLog); printf("********************************************************************\n"); free(infoLog); } /////////////////////////////////////////////////////////////////////////// fShader =glCreateShader(GL_FRAGMENT_SHADER); if(fShader ==0) { printf("can't create fragment shader! \n"); exit(1); } fs =readText("shader/perspective.frag"); //printf("%s \n",fs); ff= fs; glShaderSource(fShader, 1, &ff, NULL); glCompileShader(fShader); free(fs); glGetShaderiv(fShader, GL_INFO_LOG_LENGTH, &infoLogLength); if(infoLogLength >0) { infoLog =(char *)malloc(infoLogLength); glGetShaderInfoLog(fShader, infoLogLength, &charWritten, infoLog); ////////charWritten is printf("%s \n",infoLog); printf("*********************************************************\n"); free(infoLog); } /////////////////////////////////////////////// //////////////////////////////////////// programHandle =glCreateProgram(); glAttachShader(programHandle, vShader); glAttachShader(programHandle, fShader); glLinkProgram(programHandle); glUseProgram(programHandle); glGetProgramiv(programHandle, GL_INFO_LOG_LENGTH, &infoLogLength); if(infoLogLength >0) { infoLog =(char *)malloc(infoLogLength); glGetProgramInfoLog(programHandle, infoLogLength, &charWritten, infoLog); printf("%s \n", infoLog); printf("*********************************************************\n"); free(infoLog); } } void InitVBO() { glGenBuffers(2, vboHandles); positionBufferHandle =vboHandles[0]; colorBufferHandle =vboHandles[1]; /////////////////////////////////////////// glBindBuffer(GL_ARRAY_BUFFER, positionBufferHandle); glBufferData(GL_ARRAY_BUFFER, sizeof(positionData), positionData, GL_STATIC_DRAW); glBindBuffer(GL_ARRAY_BUFFER, colorBufferHandle); glBufferData(GL_ARRAY_BUFFER, sizeof(colorData), c
首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇c语言高级编程指南1 (翻译) 下一篇C优化篇之减少运算量

评论

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