Java& LibGDX:限制Sprite的渲染范围

时间:2014-09-30 23:09:19

标签: java libgdx sprite render

最近,我使用array整数作为我的Java屏幕切换到使用库。我使用的库是LibGDX,而我的转换则完全不同。我已经开始掌握大多数事情,而且我自己还在编写一些代码。

此时,我很好奇我是否可以限制Sprite s的渲染范围以及任何其他绘图因素,例如如果一个精灵卡在一个盒子的中途,它就不会#39; t呈现伸出的部分(如此:)

Example of Rendering in a Range
有没有办法在特定范围内渲染,如果它部分超出范围,它不会渲染超出范围的内容,或者我自己必须这样做?

2 个答案:

答案 0 :(得分:0)

你可以做简单的"剪辑"到LibGDX ScissorStack的矩形。

因为OpenGL是有状态的,并且许多LibGDX绘图API都会缓存,所以请确保" flush"或者"结束"你的批次在剪刀范围内。请参阅libgdx ScissorStack not working as expectedlibgdx Cutting an image

答案 1 :(得分:0)

如果我没有理解你,你正在寻找camera camera可让您定义Viewport(尺寸),但只会看到Viewport内的内容。
你也可以移动它来看世界的其他地方。

例如:

OrthographicCamera cam = new OrthographicCamera(80, 45);

这定义了一个camera,它以x为单位显示80个单位,y为45个单位。默认情况下,P(0/0)位于屏幕中间,因此camera显示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 s projectionMatrix设置为camera之一:

spriteBatch.setProjectionMatrix(camera.combined);

现在您可以使用此SpriteBatch进行绘制 您还应该考虑使用ViewFrustum-Culling,这意味着您不会从camera中提取内容,因为它们永远不会出现在屏幕上,但是平局调用需要一些性能。< / p>