OpenGL развязывание текстур

У меня есть массив текстур для рендеринга моделей в 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);
}
}

0

Решение

Я думаю, что проблема в этой строке:

glActiveTexture(GL_TEXTURE2);

Вы сказали, что используете текстурные блоки 0 и 1, но здесь вы сбрасываете текстурный блок 2. Может быть, это просто опечатка?

4

Другие решения


По вопросам рекламы [email protected]