【问题标题】:Avoid reloading texture in Lightweight Java Game Library避免在轻量级 Java 游戏库中重新加载纹理
【发布时间】:2012-02-19 04:31:43
【问题描述】:

我刚开始使用 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, 缓冲区);

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

【问题讨论】:

    标签: lwjgl


    【解决方案1】:

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

    看看LWJGL wikithis example

    【讨论】:

    • 请注意,您应该在此处或此站点上发布有用的答案点,否则您的帖子可能会被删除为"Not an Answer"。如果您愿意,您仍然可以包含该链接,但仅作为“参考”。答案应该是独立的,不需要链接。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-19
      • 2011-09-13
      • 1970-01-01
      相关资源
      最近更新 更多