首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >java/opengl:在64位VM上加载纹理

java/opengl:在64位VM上加载纹理
EN

Stack Overflow用户
提问于 2010-02-13 21:41:10
回答 1查看 211关注 0票数 2

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

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

下面是我的代码:

代码语言:javascript
运行
复制
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);

有没有人知道可能出了什么问题?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-14 01:52:23

实际上,最新的java6 u18更新出了一个问题,该更新包含了对bufferedimage的一些更改,与64位虚拟机无关

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2257721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档