【问题标题】:cubemap in LWJGLLWJGL 中的立方体贴图
【发布时间】:2011-02-01 22:48:59
【问题描述】:

我尝试将多维数据集映射添加到我的项目中,但出现一个错误,我不知道如何修复它 当我评论这几行时,一切正常,但是当它们处于...时发生此错误

“线程“主”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());

有什么问题吗? 我该如何解决这个错误?

感谢您的宝贵时间

【问题讨论】:

    标签: java opengl lwjgl


    【解决方案1】:

    这是因为 glTexImage2D 的最后一个参数应该是一个包含纹理像素的缓冲区。所以你应该使用 LWJGL BufferUtils 分配一个 20*20 的缓冲区,用你的纹理数据填充它,然后将此缓冲区传递给 glTexImage2D 函数。

    现在,将 int 传递给 glTexImage2D 仍然可以编译的原因是因为有一个版本接受 long 作为最新参数。它应该代表像素缓冲区对象中的偏移量,以从中获取像素数据。由于您没有附加像素缓冲区对象(并且立方体贴图不需要像素缓冲区对象),LWJGL 抱怨。 所以基本上,将 temp.getTextureID() 作为最后一个参数调用 glTexImage2D 的“错误”版本。

    【讨论】:

      猜你喜欢
      • 2012-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 2010-10-02
      • 2022-07-30
      • 2014-09-26
      相关资源
      最近更新 更多