[英]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
繪圖,您需要將SptieBatch
的projectionMatrix
設置為camera
:
spriteBatch.setProjectionMatrix(camera.combined);
現在您可以使用此SpriteBatch
進行繪制。
您還應該考慮使用ViewFrustum-Culling
,這意味着您不會從camera
取出內容,因為它們永遠不會出現在屏幕上,但是繪制調用需要一些性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.