0

因此,我是与 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) 是答案,但我似乎无法让它以我想要的方式工作。

任何帮助表示赞赏!

4

1 回答 1

0

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

尽管您没有向我们提供太多信息,但我猜您在处理 DPI 大 2 倍左右的设备(视网膜显示屏)时遇到了麻烦。如果是这种情况,您的问题可能来自“glOrtho”。此方法主要用于定义 2D 屏幕坐标系,对于 sprite 绘制,通常设置为:top = left = 0,bottom = viewHeight,right = viewWidth。这些 viewWidth 和 viewHeight 可能取自帧缓冲区本身,不适合您的情况。如果您可以使用此方法,您应该划分视网膜设备的宽度和高度,或者简单地使用视图的宽度和高度来设置它。

于 2013-03-28T07:40:15.493 回答