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一样,
估计是你哪个地方出了小问题,仔细检查下~
探讨

引用:

把glUseProgram(0);放循环内试试

不行。不是这个问题。。当我把glUseProgram((*it)->program);
换成glUseProgram(obj.program); 的时候,地形跟方块都上色了
换成glUseProgram(terrain.program); 的时候地形跟方块都是白的。