在绘图之前翻译所有对象?

时间:2013-03-27 21:30:23

标签: java opengl-es libgdx

所以我不熟悉GPU的编程,也是LibGDX的新手。我正在慢慢地按照自己的方式行事,但我在解决如何修改对象的绘制方面遇到了问题。

现在,我在我的关卡类中有一个绘制调用:

// Update the camera.
// ------------------
_cameraRef.update();
_cameraRef.apply(Gdx.gl10);
_batchRef.setProjectionMatrix(_cameraRef.combined);

// Draw.
// -----
_batchRef.begin();
_player.draw(_batchRef);
_batchRef.end();

很简单。玩家在他的x和y坐标处绘制。

然而,我想要做的是让他在他的x和y坐标上乘以一个常数(取决于游戏的分辨率,这可以是1,2或4)。

所以不是被吸引到(4,8),而是被吸引到(8,16)。

基本上,有没有办法告诉批处理从距离x和y坐标2x或4x位置绘制每个对象?

我似乎认为SpriteBatch :: translate(x,y,z)就是答案,但我似乎无法按照我想要的方式工作。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

没有GL方法来乘以平移坐标。如果您认为这是您应该做的事情,您可以将矩阵作为浮点数组并将转换组件相乘。我不建议这样做,只需使用translate(x*resolutionFactor, y*resolutionFactor, z*resolutionFactor)

虽然你没有给我们太多信息,但我猜你在处理DPI大于2倍的设备时会遇到麻烦(视网膜显示)。如果是这种情况,你的问题可能来自“glOrtho”。此方法主要用于在2D中定义屏幕坐标系,对于精灵绘图,它通常设置为:top = left = 0,bottom = viewHeight,right = viewWidth。那些viewWidth和viewHeight可能是从帧缓冲区本身获取的,并且对于你的情况是错误的。如果您可以访问此方法,则应该为视网膜设备划分宽度和高度,或者只使用视图的宽度和高度进行设置。