OpenGL纹理解除绑定

时间:2014-12-30 17:59:26

标签: c++ opengl texture-mapping texture2d

我在OpenGL中有一个用于模型渲染的纹理数组。此数组包含漫反射和镜面反射纹理。由于某些网格没有镜面纹理,我只是在每次渲染后将NULL纹理绑定到我的镜面采样器,如果网格具有镜面纹理,我只绑定一个。但是,我仍然看到没有网格的镜面纹理。

这是我渲染的代码 如果网格没有镜面纹理,materialIndices保存数组中纹理的索引 索引是-1
纹理单元0用于漫射
用于镜面的纹理单元2

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);
    }
}

1 个答案:

答案 0 :(得分:4)

我认为问题在于这一行:

glActiveTexture(GL_TEXTURE2);

你说你使用纹理单位0和1,但是你在这里重置了纹理单元2.也许它只是一个错字?