2013-03-26 2 views
1

Я пытаюсь просто загрузить 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); 

В результате я не могу увидеть текстуру в конце концов, как ни странно, распределение, вызванное текстурных координат. Я собрал следующую информацию:

  1. Я использую для загрузки изображения хорошо работает;

  2. Настройка карты cub из главы SuperBibble 9. Почти такой же код будет хорошо работать при компиляции кода книги.

BTW, есть ли у кого-нибудь предложения по загрузке библиотеки изображений? Тот, который я использую, кажется, прекращает обновление в течение очень долгого времени ...

Appending: Теперь я выясняю, что если я попытаюсь загрузить только один img, как текстуру всех сторон небоскреба, он будет показан , Пока используется переменная для замены определенного значения, ничего не будет отображаться.

+0

Как и где вы устанавливаете мипмапы? (и если вы этого не сделаете, почему вы включили их?) – JasonD

+0

@JasonD Вы имеете в виду фильтр минимизации? На самом деле я не создал mipmap. Он по-прежнему не работает, когда я меняю его на GL_LINEAR. Поэтому я думаю, что это не проблема. – Narusaki

+0

"* Тот, который я использую, кажется, перестает обновляться в течение очень долгого времени ... *« ПОЧВЫ? ПОЧТА * * * *; он имеет все функции, которые владелец хочет дать. В этот момент нет необходимости обновлять его. –

ответ

0

Наконец-то я выясню это. Это потому, что разрешение последнее изображение отличается от остальных.

Реальный вид зря тратить много времени.

Смежные вопросы