У меня есть массив текстур для рендеринга модели в OpenGL. Этот массив содержит диффузные и зеркальные текстуры. Поскольку некоторые сетки не имеют зеркальной текстуры, я просто привязываю текстуру NULL к моему зеркальному семплеру после каждого рендеринга, и я связываю его только в том случае, если сетка имеет зеркальную текстуру. Тем не менее, я до сих пор вижу зеркальные текстуры на сетках, у которых их нет.
Это мой код для рендеринга
materialIndices содержит индекс текстуры в массиве, если сетка не имеет зеркальную текстуру
индекс -1
текстурник 0 диффузного
текстуры блок- для зеркального
OpenGL texture unbinding
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' принимает целое число. –