java/opengl:在64位虚拟机上加载纹理

java/opengl:在64位虚拟机上加载纹理,java,opengl,64-bit,textures,Java,Opengl,64 Bit,Textures,在64位环境中运行时,我的纹理加载器似乎不再工作。我不确定原因是64位虚拟机本身还是文件位于64位文件系统上 要加载的图像是一个RGBA png文件,它在32位windows系统上正确显示,但在我的64位win7上,一些颜色通道似乎翻转了 这是我的密码: InputStream is = Thread.currentThread().getContextClassLoader() .getResourceAsStream(path); BufferedImage bi = ImageIO

在64位环境中运行时,我的纹理加载器似乎不再工作。我不确定原因是64位虚拟机本身还是文件位于64位文件系统上

要加载的图像是一个RGBA png文件,它在32位windows系统上正确显示,但在我的64位win7上,一些颜色通道似乎翻转了

这是我的密码:

InputStream is = Thread.currentThread().getContextClassLoader()
    .getResourceAsStream(path);
BufferedImage bi = ImageIO.read(is);
is.close();

byte[] databytes = ((DataBufferByte) bi.getRaster().getDataBuffer()).getData();
ByteBuffer data = ByteBuffer.allocateDirect(databytes.length);
data.order(ByteOrder.nativeOrder());
data.put(databytes, 0, databytes.length);
data.rewind();

IntBuffer texb = IntBuffer.allocate(1);

binding.genTextures(1, texb);
binding.bindTexture(binding.TEXTURE_2D(), texb.get(0));
binding.texParameter(binding.TEXTURE_2D(), binding.TEXTURE_MIN_FILTER(), 
    binding.LINEAR());
binding.texParameter(binding.TEXTURE_2D(), binding.TEXTURE_MAG_FILTER(), 
    binding.LINEAR());
binding.texParameter(binding.TEXTURE_2D(), binding.TEXTURE_WRAP_S(), 
    binding.CLAMP());
binding.texParameter(binding.TEXTURE_2D(), binding.TEXTURE_WRAP_T(), 
    binding.CLAMP());
binding.texEnvi(binding.TEXTURE_ENV(), binding.TEXTURE_ENV_MODE(), 
    binding.MODULATE());
binding.texImage2D(binding.TEXTURE_2D(), 0, binding.RGBA(), bi.getWidth(), 
    bi.getHeight(), 0, binding.RGBA(), binding.UNSIGNED_BYTE(), data);

有人知道会出什么问题吗?谢谢

事实上,最新更新的java6 u18出现了问题,其中包含对BuffereImage的一些更改,与64位虚拟机无关

事实上,最新更新的java6 u18出现了问题,其中包含对BuffereImage的一些更改,与64位虚拟机无关