Я пытаюсь просто загрузить 6 изображений как текстуру куба в OpenGL. Blow - код для загрузки:CubeMap в OpenGL вообще не отображается
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP_ARB, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
for (int i = 0;i < 6;++i)
{
int width, height, channel;
unsigned char* img = SOIL_load_image(skybox[i].c_str(), &width, &height, &channel, SOIL_LOAD_AUTO);
glTexImage2D(cubeTarget[i], 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, img);
delete img;
}
glEnable(GL_TEXTURE_CUBE_MAP_ARB);
Проверочный код передается. Странно то, что полученный куб белый. Кажется, что текстура вообще не загружена. Изменить код загрузки, чтобы увидеть, будет ли 2D текстуры работы:
glGenTextures(1, texture);
glBindTexture(GL_TEXTURE_2D, texture[0]);
int width, height, channel;
unsigned char* img = SOIL_load_image(skybox[0].c_str(), &width, &height, &channel, SOIL_LOAD_AUTO);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, img);
delete img;
if(texture[0] == 0) return false;
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glEnable(GL_TEXTURE_2D);
В результате я не могу увидеть текстуру в конце концов, как ни странно, распределение, вызванное текстурных координат. Я собрал следующую информацию:
Я использую для загрузки изображения хорошо работает;
Настройка карты cub из главы SuperBibble 9. Почти такой же код будет хорошо работать при компиляции кода книги.
BTW, есть ли у кого-нибудь предложения по загрузке библиотеки изображений? Тот, который я использую, кажется, прекращает обновление в течение очень долгого времени ...
Appending: Теперь я выясняю, что если я попытаюсь загрузить только один img, как текстуру всех сторон небоскреба, он будет показан , Пока используется переменная для замены определенного значения, ничего не будет отображаться.
Как и где вы устанавливаете мипмапы? (и если вы этого не сделаете, почему вы включили их?) – JasonD
@JasonD Вы имеете в виду фильтр минимизации? На самом деле я не создал mipmap. Он по-прежнему не работает, когда я меняю его на GL_LINEAR. Поэтому я думаю, что это не проблема. – Narusaki
"* Тот, который я использую, кажется, перестает обновляться в течение очень долгого времени ... *« ПОЧВЫ? ПОЧТА * * * *; он имеет все функции, которые владелец хочет дать. В этот момент нет необходимости обновлять его. –