避免在轻量级Java游戏库中重新加载纹理

时间:2012-02-19 04:31:44

标签: lwjgl

我刚开始使用lwjgl,并在屏幕上绘制了一个纹理 但是,我想定期更改此纹理中的像素数据

我目前通过更改我的BufferedImage,然后将其转换为纹理并在openGL中重绘它来实现此目的

我正在使用示例纹理加载器:http://lwjgl.org/wiki/index.php?title=Examples:SpaceInvaders_TextureLoader

我觉得我不应该经常重新加载纹理,而且我害怕通过在游戏循环中调用convertImageData函数来浪费资源 我该如何避免这种情况?

编辑:好吧,我通过存储ByteBuffer并简单地修改它让我自己更开心,接着是:

glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA8,800,600,0,GL_RGBA,GL_UNSIGNED_BYTE,缓冲区);

而不是做整个转换。我觉得这很好

2 个答案:

答案 0 :(得分:0)

您可以使用FBO(帧缓冲区对象)渲染到纹理。

查看LWJGL wikithis example

答案 1 :(得分:0)

在我看来,你想要为纹理设置动画。这可以使用spritesheet轻松完成;如果可能,将所有动画阶段绘制到纹理上,线性地绘制,然后根据要使用的精灵动画调制纹理坐标。