【问题标题】:More elegant approach regarding the camera关于相机的更优雅的方法
【发布时间】:2013-07-25 09:51:12
【问题描述】:

我正在使用 Libgdx 绘制 2d 场景。在绘图之前我会这样做:

batch.setProjectionMatrix(camera.combined);

正如预期的那样,(0,0) 坐标不再位于屏幕的左下方,而是位于屏幕的中间。

正确定位整个场景的更优雅的解决方案是:

1) 相应地平移/定位相机以显示屏幕上的所有内容。

2) 在记住 (0,0) 现在位于中间的同时绘制所有内容,如下所示:

batch.draw(background, -background.getRegionWidth()/2, -background.getRegionHeight()/2);

请注意,我实际上是在做Parallax scrolling,并且第一个选项会按预期稍微配置我的中间层对象。所以如果这个问题没有好的解决方案,那么我更倾向于第二种选择。

【问题讨论】:

    标签: java camera coordinates libgdx


    【解决方案1】:

    尝试将您的对象保留在“世界空间”中,并将从“世界空间”到屏幕的所有翻译保留在“相机”中(“相机”只是对定义的矩阵的抽象 将世界空间转换为屏幕空间)。使用有关屏幕的信息污染对象的位置会导致混乱和问题。

    具体来说,在你的情况下,只需调用

    camera.translate(width/2, height/2, 0);
    

    让 (0, 0) 回到左下角(如果你的“世界空间”完全在正坐标空间中。

    有关更多详细信息,请在 Stack Overflow 上搜索 OpenGL 相机问题,例如:In 3d graphics, what is camera or eye space?

    【讨论】:

      猜你喜欢
      • 2016-10-09
      • 2022-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多