最近我从使用Java中的整数数组
作为屏幕转换成了使用一个库。我使用的库是LibGDX
,对我来说这种转换非常不同。大多数事情我已经开始掌握了,而且我仍在自己写一些代码。
目前,我想知道是否可以限制Sprite
的渲染范围和其他绘图因素,例如如果精灵卡在盒子的一半上面,它不会渲染超出范围的部分(如下图所示:)
有没有一种特定的渲染方式,如果超出范围,就不渲染超出范围的部分,或者我必须自己处理?
由于OpenGL是有状态的,并且许多LibGDX绘图API都具有缓存功能,请确保在剪刀范围内“刷新”或“结束”您的批处理。请参见libgdx ScissorStack not working as expected和libgdx Cutting an image。
相机
。相机
可以让你定义一个视口
(大小),你只能看到这个视口
内的东西。例如:
OrthographicCamera cam = new OrthographicCamera(80, 45);
这定义了一个相机
,它在x轴上显示80个单位,在y轴上显示45个单位。默认情况下,它的P(0/0)位于屏幕中央,因此这个相机
在x轴上显示从-40到+40,在y轴上显示从-22.5到+22.5的对象。
您可以移动它,使得P(0/0)位于左下角:
camera.position.x = -40;
camera.position.y = -22.5;
camera.update();
这将通过40个单位向左移动相机,并向下22.5个单位,使P(0/0)成为左下角。不要忘记调用update()
,因为这会重新计算投影和视图矩阵。
最后,要使用这个camera
进行绘制,您需要将SptieBatch
的projectionMatrix
设置为camera
之一:
spriteBatch.setProjectionMatrix(camera.combined);
现在你可以使用这个SpriteBatch
进行绘制。
你还应该考虑使用ViewFrustum-Culling
,这意味着你不会绘制那些超出camera
范围的物体,因为它们永远不会出现在屏幕上,但是绘制调用会消耗一定的性能。