渲染:绘制一次还是重绘? JOGL + Java2D + Java Swing会很麻烦吗?

时间:2014-04-10 03:00:54

标签: java android swing opengl-es jogl

1)重绘Vs Draw

有点哲学问题,但是......"正确"是什么?或者"接受"在不同的分辨率下渲染游戏(2d,我理解OGL如何工作......)的方法?我应该为我的图像添加单独的尺寸(如Android APK),并在一个画布上绘制时单独调整每个对象的大小,还是应该在设置分辨率的绘图画布上绘制,然后将该图像调整到另一个显示画布上?我一般来说,但是,如果你需要我具体,我会使用Java来构建引擎。

可预见的利益/问题:

#1) Resize at Draw
    + No additional drawing step
    + Sweet resolution
    - Possible math/physics/placement issues
    - Tons of math each step for scale
    - Lots of resources

#2) Resize at Render
    + No additional math; one step
    + One set of images; smaller res. package
    + One set canvas size (easier to do math/phys./placement)
    - Additional drawing step
    - Poor resolution =(

看起来#2是显而易见的选择,因为利益与问题的数量有关,但是......是吗?有没有标准的方法来调整2D游戏的大小?

2)JOGL + Java2D + Java Swing

同时使用JOGL,Java2D和Java Swing会很麻烦吗?在JOGL中进行2D或布局是否值得?为什么或为什么不呢?

编辑:使用BufferedImage绘制并将BufferedImage渲染到面板大小相对于宽高比是非常低效的挥杆效果。显然,最好立即绘制到面板,同时单独调整每个图像/元素的大小。不是我的第一个假设......

编辑2:愚蠢的我......在任何其他操作之前,只需缩放并将图形上下文转换为调整后的分辨率的大小。性能的提升是超级糟糕的。这是问题的正确答案。绘制,缩放/翻译。 B)

1 个答案:

答案 0 :(得分:1)

我无法完全回答你的第二个问题,因为我对JOGL或Java2D没有多少经验,但我认为没有任何理由让它们发生冲突或麻烦。

对于你的第一个问题,我可以肯定地说这取决于你。你的目标受众是什么?你的游戏内存是否密集(曾经注意到很多游戏都有高分辨率/低分辨率选项)?这是一款可用于截然不同的屏幕尺寸的游戏吗?如果是这样,您可能希望提供2-3个不同的“资产包”,每个资产都按原始尺寸(最大尺寸)缩放。绘制图像的数学并不像你想象的那么多。

另外:

如果你以正确的方式构建游戏,你根本不需要做太多的数学运算。如果您有某种Camera课程负责查看GameWorld,那么您只需缩放相机的图像,而不是单独缩放每个图像。