//画三角形 void drawTriangle(void) { GLuint ModelID = glGetUniformLocation(shaderLoader.getProgramID(), "Model"); if(ModelID != -1) { glUniformMatrix4fv(ModelID, 1, GL_FALSE, &Model[0][0]); } GLuint ProjectionID = glGetUniformLocation(shaderLoader.getProgramID(), "Projection"); if(ProjectionID != -1) { glUniformMatrix4fv(ProjectionID, 1, GL_FALSE, &Projection[0][0]); } GLuint ViewID = glGetUniformLocation(shaderLoader.getProgramID(), "View"); if(ViewID != -1) { glUniformMatrix4fv(ViewID, 1, GL_FALSE, &View[0][0]); } glBindVertexArray(vao); glDrawArrays(GL_TRIANGLES, 0, 12*3); // 12*3 indices starting at 0 -> 12 triangles glBindVertexArray(0); }
//设置并使用着色器 void initShader(void) { shaderLoader.load("/Users/wistoneqqx/Documents/opengl/github/texture-maps-gl7/texture-maps/simpleShader.vert", "/Users/wistoneqqx/Documents/opengl/github/texture-maps-gl7/texture-maps/simpleShader.frag"); shaderLoader.bind(); //定义两张纹理的采样器 glGenSamplers(1,&g_Sampler1); glGenSamplers(1,&g_Sampler2); glSamplerParameteri(g_Sampler1, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glSamplerParameteri(g_Sampler1, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glSamplerParameteri(g_Sampler2, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glSamplerParameteri(g_Sampler2, GL_TEXTURE_MIN_FILTER, GL_LINEAR); textureLocation1 = glGetUniformLocation(shaderLoader.getProgramID(), "u_texture1"); textureLocation2 = glGetUniformLocation(shaderLoader.getProgramID(), "u_texture2"); if(textureLocation1==-1 && textureLocation2==-1) printf("Get textureLocation error!\n"); }