У меня есть массив текстур для рендеринга модели в 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);
}
}
glBindTexture(GL_TEXTURE_2D, 0)
.NULL
- это тип указателя, ноglBindTexture
принимает целое число. - person Colonel Thirty Two   schedule 30.12.2014