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'接受一個整數。 –