有点哲学问题,但是......"正确"是什么?或者"接受"在不同的分辨率下渲染游戏(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游戏的大小?
同时使用JOGL,Java2D和Java Swing会很麻烦吗?在JOGL中进行2D或布局是否值得?为什么或为什么不呢?
编辑:使用BufferedImage绘制并将BufferedImage渲染到面板大小相对于宽高比是非常低效的挥杆效果。显然,最好立即绘制到面板,同时单独调整每个图像/元素的大小。不是我的第一个假设......
编辑2:愚蠢的我......在任何其他操作之前,只需缩放并将图形上下文转换为调整后的分辨率的大小。性能的提升是超级糟糕的。这是问题的正确答案。绘制,缩放/翻译。 B)
答案 0 :(得分:1)
我无法完全回答你的第二个问题,因为我对JOGL或Java2D没有多少经验,但我认为没有任何理由让它们发生冲突或麻烦。
对于你的第一个问题,我可以肯定地说这取决于你。你的目标受众是什么?你的游戏内存是否密集(曾经注意到很多游戏都有高分辨率/低分辨率选项)?这是一款可用于截然不同的屏幕尺寸的游戏吗?如果是这样,您可能希望提供2-3个不同的“资产包”,每个资产都按原始尺寸(最大尺寸)缩放。绘制图像的数学并不像你想象的那么多。
另外:
如果你以正确的方式构建游戏,你根本不需要做太多的数学运算。如果您有某种Camera
课程负责查看GameWorld
,那么您只需缩放相机的图像,而不是单独缩放每个图像。