opengl shader 有关问题
opengl shader 问题
大家好,
请问如何同时给两个物体着色.我的代码如下
basicShaderVert = compileShader("Assets/basic_shader_v.glsl", GL_VERTEX_SHADER);
basicShaderFrag = compileShader("Assets/basic_shader_f.glsl", GL_FRAGMENT_SHADER);
terrainShaderVert = compileShader("Assets/terrainshader_v.glsl", GL_VERTEX_SHADER);
terrainShaderFrag = compileShader("Assets/terrainshader_f.glsl", GL_FRAGMENT_SHADER);
// Link shader programs here
obj.program = linkProgram(basicShaderVert, basicShaderFrag);
terrain.program = linkProgram(terrainShaderVert, terrainShaderFrag);
我的obj 跟terrain是两个模型 他们都属于同一个结构Object
struct Object {
Mesh mesh; // Polygon definition
unsigned int vbo; // VBO id
unsigned int program; // Shader Program id
}
然后我 开始使用shader
for (list<Object*>::iterator it = objects.begin(); it != objects.end(); ++it) {
glUseProgram((*it)->program);
}
这个for loop就是循环的就是所有 list 里面的Object, 在程序中我已经把obj 跟terrain放进去了。
最后画出来的是obj 的颜色正常,是彩色的,但是terrain 变成白白的很亮的一块。但是他们两的glsl文件里的内容一样。
求解答。。。。
------解决方案--------------------
说明terrain这组shader有问题噻,但你又说它和另一组shader一样,
估计是你哪个地方出了小问题,仔细检查下~
大家好,
请问如何同时给两个物体着色.我的代码如下
basicShaderVert = compileShader("Assets/basic_shader_v.glsl", GL_VERTEX_SHADER);
basicShaderFrag = compileShader("Assets/basic_shader_f.glsl", GL_FRAGMENT_SHADER);
terrainShaderVert = compileShader("Assets/terrainshader_v.glsl", GL_VERTEX_SHADER);
terrainShaderFrag = compileShader("Assets/terrainshader_f.glsl", GL_FRAGMENT_SHADER);
// Link shader programs here
obj.program = linkProgram(basicShaderVert, basicShaderFrag);
terrain.program = linkProgram(terrainShaderVert, terrainShaderFrag);
我的obj 跟terrain是两个模型 他们都属于同一个结构Object
struct Object {
Mesh mesh; // Polygon definition
unsigned int vbo; // VBO id
unsigned int program; // Shader Program id
}
然后我 开始使用shader
for (list<Object*>::iterator it = objects.begin(); it != objects.end(); ++it) {
glUseProgram((*it)->program);
}
这个for loop就是循环的就是所有 list 里面的Object, 在程序中我已经把obj 跟terrain放进去了。
最后画出来的是obj 的颜色正常,是彩色的,但是terrain 变成白白的很亮的一块。但是他们两的glsl文件里的内容一样。
求解答。。。。
------解决方案--------------------
说明terrain这组shader有问题噻,但你又说它和另一组shader一样,
估计是你哪个地方出了小问题,仔细检查下~