0
我有一个用于OpenGL模型渲染的纹理数组。该数组拥有漫反射和镜面纹理。由于一些网格物体没有镜面纹理,我只需在每次渲染后将NULL纹理绑定到我的镜面采样器,并且如果网格具有镜面纹理,我只绑定一个。但是,我仍然看到没有一个网格的镜面纹理。
这是我的代码用于呈现
materialIndices保持在阵列中的纹理的索引,如果网状不具有镜面纹理
的索引为-1
纹理单元0弥漫
纹理单元2镜面
OpenGL纹理解除绑定
void CModel::render()
{
if (!loaded) return;
int numMeshes = meshSize.size();
for (int i = 0; i < numMeshes; i++)
{
int matIndex = materialIndices[i][0];
textures[matIndex].bind(0);
int specIndex = materialIndices[i][1];
if (specIndex >= 0) textures[specIndex].bind(2);
glDrawArrays(GL_TRIANGLES, meshStartIndices[i], meshSize[i]);
glActiveTexture(GL_TEXTURE2);
glBindTexture(GL_TEXTURE_2D, NULL);
}
}
这是没有着色器的旧的opengl吗? –
你应该做'glBindTexture(GL_TEXTURE_2D,0)'。 'NULL'是一个指针类型,但'glBindTexture'接受一个整数。 –