Java 爪哇及;LibGDX:限制精灵的渲染范围

Java 爪哇及;LibGDX:限制精灵的渲染范围,java,libgdx,sprite,render,Java,Libgdx,Sprite,Render,最近,我从使用整数的数组作为Java屏幕切换到使用库。我使用的库是LibGDX,对我来说,转换是完全不同的。大多数事情我已经开始掌握,我自己还在写一些代码 在这一点上,我很好奇是否可以限制Sprites的渲染范围和任何其他绘图因素,例如,如果一个Sprite卡在盒子的一半,它不会渲染突出的部分(如此:) 有没有一种方法可以在特定范围内进行渲染,如果部分超出范围,则不会渲染超出范围的内容,或者我必须自己进行渲染?您可以使用 由于OpenGL是有状态的,并且许多LibGDX绘图API都缓存在缓存

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

在这一点上,我很好奇是否可以限制
Sprite
s的渲染范围和任何其他绘图因素,例如,如果一个Sprite卡在盒子的一半,它不会渲染突出的部分(如此:)


有没有一种方法可以在特定范围内进行渲染,如果部分超出范围,则不会渲染超出范围的内容,或者我必须自己进行渲染?

您可以使用


由于OpenGL是有状态的,并且许多LibGDX绘图API都缓存在缓存中,因此请确保在剪切范围内“刷新”或“结束”批处理。请参见和

如果我没有误解您的意思,您正在寻找
摄像头

使用
摄影机
可以定义
视口
(大小),并且只能看到该
视口内的东西

你也可以把它向四周移动,看看世界的其他地方

例如:

OrthographicCamera cam = new OrthographicCamera(80, 45);
这定义了一个
摄像机
,它在x轴上显示80个单位,在y轴上显示45个单位。默认情况下,P(0/0)在屏幕的中间,所以这个<代码>相机< /代码>显示对象从-x到+x在x和-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()
,因为这会重新计算投影和视图矩阵

最后,要使用该
摄像机
进行绘制,需要将
SptieBatch
s
projectionMatrix
设置为
摄像机
之一:

spriteBatch.setProjectionMatrix(camera.combined);
现在您可以使用此
SpriteBatch
进行绘制。
你还应该考虑SE代码> VistabistMulk剔除< /C> >,也就是说,你不把东西从<代码>相机中提取出来,因为它们永远不会出现在屏幕上,但是绘制调用需要一些性能。