我一直在使用java常规图形设备,awt和swing的东西,用Graphics,Graphics2D等有一段时间,然后开始看LWJGL的一系列教程。我真的很喜欢并决定在那个系统中重做我的一个游戏;我想,既然我已经有了逻辑,那就很容易了。我刚刚遇到了一个概念问题。
在这个特定的例子中,我有一个类 Box 代表一个盒子,但我用图像绘制它,从而制作边框。我有 9 张图像,一张用于中心(那只是一张 1 像素宽的纯色图像),4 张用于侧面,4 张用于角落。我将所有这些图像放在一个 BufferedImage 数组中,它是静态的,因为所有盒子都是一样的。然后,每个盒子都有一个全局的BufferedImage,我在里面画了盒子,这个过程真的很慢,因为我必须在盒子的每个部分都画一个图像。然后,在真正的绘制方法(接收图形 g)中,我只是将 BufferedImage 绘制在正确的位置。由于盒子的大小在创建后并没有改变,我只需要在构造函数中“创建”一次盒子图像。
我不知道如何用 LWJGL 做到这一点,因为 gl_ 方法(glBegin()、glVertex2i())总是会在屏幕上绘制,即使我从未指定过。那么如何绘制图像以及如何将其存储在内存中(也使用 BufferedImage),以及如何在需要时将其绘制在屏幕上?我发现 LWJGL 使用纹理,我将 BufferedImage 的第一个静态数组设为纹理的静态数组,然后正确保存其中的 9 个纹理中的每一个。这是正确的方法吗?全局BufferedImage呢,应该是全局Texture吗?在那种情况下,如何在纹理上“绘制”?