кубическая карта в LWJGL - PullRequest
       6

кубическая карта в LWJGL

3 голосов
/ 02 февраля 2011

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

"Исключение в потоке" main "org.lwjgl.opengl.OpenGLException: невозможно использовать смещения, когда объект буфера распаковки пикселей отключен"

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());

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

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

1 Ответ

4 голосов
/ 22 марта 2011

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

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

...