2011-02-01 2 views
3

Я пытаюсь добавить отображение куба в мой проект, но я получаю одну ошибку, что я не знаю, как ее исправить , когда я прокомментирую эти несколько строк, каждая вещь отлично работает, но когда они находятся ... эта ошибка возникаетcubemap in LWJGL

«Исключение в потоке„основного“org.lwjgl.opengl.OpenGLException: Невозможно использовать смещения, когда Pixel Распаковка Buffer Object отключен»

GL11.glDisable(GL11.GL_TEXTURE_2D); 
    GL11.glEnable(GL13.GL_TEXTURE_CUBE_MAP); 
    GL11.glPixelStorei(GL11.GL_UNPACK_ALIGNMENT, 1); 

    GL11.glTexImage2D(GL13.GL_TEXTURE_CUBE_MAP_POSITIVE_X,0,GL11.GL_RGBA,20,20,0,GL11.GL_RGBA,GL11.GL_UNSIGNED_BYTE,temp.getTextureID()); 
    GL11.glTexImage2D(GL13.GL_TEXTURE_CUBE_MAP_NEGATIVE_X,0,GL11.GL_RGBA,20,20,0,GL11.GL_RGBA,GL11.GL_UNSIGNED_BYTE,temp.getTextureID()); 
    GL11.glTexImage2D(GL13.GL_TEXTURE_CUBE_MAP_POSITIVE_Y,0,GL11.GL_RGBA,20,20,0,GL11.GL_RGBA,GL11.GL_UNSIGNED_BYTE,temp.getTextureID()); 
    GL11.glTexImage2D(GL13.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,0,GL11.GL_RGBA,20,20,0,GL11.GL_RGBA,GL11.GL_UNSIGNED_BYTE,temp.getTextureID()); 
    GL11.glTexImage2D(GL13.GL_TEXTURE_CUBE_MAP_POSITIVE_Z,0,GL11.GL_RGBA,20,20,0,GL11.GL_RGBA,GL11.GL_UNSIGNED_BYTE,temp.getTextureID()); 
    GL11.glTexImage2D(GL13.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,0,GL11.GL_RGBA,20,20,0,GL11.GL_RGBA,GL11.GL_UNSIGNED_BYTE,temp.getTextureID()); 

есть ли что не так? как я могу исправить эту ошибку?

спасибо за ваше время

ответ

4

Это происходит потому, что последний аргумент glTexImage2D должен быть буфер, содержащий пиксели для текстуры. Таким образом, вы должны выделить буфер 20 * 20, используя LWJGL BufferUtils, заполнить его данными текстуры и передать этот буфер функции glTexImage2D.

Теперь причина, по которой передача int в glTexImage2D все еще компилируется, заключается в том, что существует одна версия, которая принимает длинный последний аргумент. Предполагается, что он должен представлять смещение в пиксельном буфере для получения данных пикселя. Поскольку у вас нет прикрепленного объекта пиксельного буфера (и вам не нужен один для кубических карт), LWJGL жалуется. Итак, вставляя temp.getTextureID(), поскольку последний аргумент вызывает «неправильную» версию glTexImage2D.

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