簡體   English   中英

使用OpenGL ES繪制紋理的最簡單方法是什么?

[英]What is the easiest way to draw texture with OpenGL ES?

我看到了這個Google IO會話: http//code.google.com/intl/iw/events/io/2009/sessions/WritingRealTimeGamesAndroid.html
他說draw_texture函數是最快的,VBO是第二快的。
但我不明白如何使用它(draw_texture方法或VBO方式)。

有什么建議嗎?

視頻中提到的精靈方法測試的源代碼可在此處獲得:
http://code.google.com/p/apps-for-android/source/browse/#svn/trunk/SpriteMethodTest

以下是使用VBO的示例:
http://code.google.com/p/apps-for-android/source/browse/SpriteMethodTest/src/com/android/spritemethodtest/Grid.java#237

以下是使用繪制紋理擴展的示例:
http://code.google.com/p/apps-for-android/source/browse/SpriteMethodTest/src/com/android/spritemethodtest/GLSprite.java

但是要注意的一點是,繪制紋理擴展實際上並不是所有使用精靈的游戲中最快的。 例如,許多游戲具有共享相同渲染狀態的精靈組。 在這種情況下,將具有相同渲染狀態的所有精靈放在同一緩沖區中並使用相同的繪制命令繪制它們要快得多。 draw texture命令不允許這樣做。 使用draw texture命令,你必須為每個sprite調用一次。

這就是經常使用地圖集紋理的原因。 地圖集紋理是單個綁定紋理對象,其中包含許多不同的圖像。 您可以使用不同的圖像繪制精靈,而無需綁定到不同的紋理對象。 你所做的就是讓他們在地圖集紋理中使用不同的紋理坐標。 如果另一個渲染狀態也是相同的,例如所需的混合功能,那么您可以將精靈繪制在一起以獲得更好的性能。

這里有一些很棒的Android OpenGL ES工作示例。

http://code.google.com/p/android-gl/

暫無
暫無

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

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