我尝试将多维数据集映射添加到我的项目中但是我得到一个错误,我不知道如何修复它 当我评论这几行时,每件事情都很好但是当他们在...时会出现这个错误
“线程中的异常”main“org.lwjgl.opengl.OpenGLException:禁用Pixel Unpack 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());
有什么不对吗? 我该如何解决这个错误?
谢谢你的时间答案 0 :(得分:4)
这是因为glTexImage2D的最后一个参数应该是一个包含纹理像素的缓冲区。所以你应该使用LWJGL BufferUtils分配一个20 * 20的缓冲区,用你的纹理数据填充它,然后将这个缓冲区传递给glTexImage2D函数。
现在,将int传递给glTexImage2D仍然编译的原因是因为有一个版本接受long作为最新参数。并且它应该表示像素缓冲区对象中的偏移量以从中获取像素数据。由于您没有附加像素缓冲区对象(并且您不需要一个用于立方体贴图),LWJGL抱怨。 所以基本上,将temp.getTextureID()作为最后一个参数调用glTexImage2D的“错误”版本。