簡體   English   中英

Java和LibGDX:限制Sprite的渲染范圍

[英]Java & LibGDX: Limit Rendering Range of a Sprite

最近我使用整數array作為我的Java屏幕切換到使用庫。 我正在使用的庫是LibGDX ,對我的轉換是完全不同的。 我已經開始掌握大多數事情了,我自己還在編寫一些代碼。

在這一點上,我很好奇我是否可以限制Sprite的渲染范圍和任何其他繪圖因素,例如如果一個精靈從盒子中間伸出一半,它就不會渲染那個突出的部分(如此:)

范圍中的渲染示例
有沒有辦法在特定范圍內渲染,如果它部分超出范圍,它不會渲染超出范圍的內容,或者我自己必須這樣做?

您可以使用LibGDX ScissorStack對矩形進行簡單的“剪裁”。

由於OpenGL是有狀態的,並且許多LibGDX繪圖API都會緩存,因此請務必在剪刀范圍內“刷新”或“結束”您的批次。 請參閱libgdx ScissorStack無法正常工作libgdx剪切圖像

如果我沒有錯過理解你,你正在尋找camera
camera允許您定義Viewport (大小),您只能看到此Viewport
你也可以移動它來看世界的其他地方。

例如:

OrthographicCamera cam = new OrthographicCamera(80, 45);

這定義了一個camera ,它以x為單位顯示80個單位,y為45個單位。 默認情況下,P(0/0)位於屏幕中間,因此本camera顯示x和-40到+40以及-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繪圖,您需要將SptieBatchprojectionMatrix設置為camera

spriteBatch.setProjectionMatrix(camera.combined);

現在您可以使用此SpriteBatch進行繪制。
您還應該考慮使用ViewFrustum-Culling ,這意味着您不會從camera取出內容,因為它們永遠不會出現在屏幕上,但是繪制調用需要一些性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM