我很高興地使用LibGDX框架的SpriteBatch類。 我的目標是通過着色器修改精靈的表示。LibGDX SpriteBatch Multitexture可能嗎?
batch = new SpriteBatch(2, shaderProgram);
我複製從SpriteBatch類的默認渲染,加上另一個 均勻採樣2D
+ "uniform sampler2D u_Texture2;\n"//
有沒有一種工作方式給紋理着色器。 這樣做,allways結束了一個ClearColor屏幕。
batch.begin();
texture2.bind(1);
shaderProgram.setUniformi("u_Texture2", 1);
batch.draw(spriteTexture,positions[0].x,positions[0].y);
batch.draw(spriteTexture,positions[1].x,positions[1].y);
batch.end();
單獨使用每個紋理都可以。在網格類的幫助下手動繪製按預期工作。那麼我能做些什麼來使用SpriteBatch的便利?
THX for Help
嘿最後我得到了答案,謝謝! 你說得對。這是類綁定紋理的原因。我需要說我已經制作了我自己的自定義SpriteBatch類。 SpriteBatch在渲染更大尺寸的Framebuffer紋理時也顯示了一些問題。我之前總是綁定TEXTURE0。這就是爲什麼我決定按照自己的方式去做。不太方便,但方式更靈活。現在我有一個Sprite Batch,它只處理頂點的生成。所有東西都可以用自己的着色器進行定製。 – fky 2012-09-07 16:20:09
請注意,SpriteBatch只會生成頂點,如果您不小心,會遇到性能問題。 SpriteBatch本身有一些「可用性」問題,但這是一個設計決定。它旨在簡化最常見的繪圖操作,並以某種方式傷害靈活性。無論如何,我已經能夠解決目前爲止我遇到的大多數問題(大多數情況下,在使用之前啓用/禁用適當的opengl標誌)。也許今晚我會嘗試像你一樣實施多紋理,並讓你知道;) – 2012-09-07 17:33:18
謝謝你的支持。它像你編輯的一樣工作。但是,我不喜歡它。這對我來說看起來很危險。我更喜歡我的專用版本,因爲它的體積更小,因此也更快,更好的調試。 SpriteBatch正在努力讓每個人都開心。在我看來,這不是真正的性能優化類。但無論如何,感謝您澄清SpriteBatch使用最後綁定紋理而不僅僅是TEXTURE0 – fky 2012-09-17 15:26:11