2013-04-24 14 views
0

在OpenGL中哪一個會導致更好的性能。要改變剔除的臉部或旋轉我的物體?旋轉一個物體或改變剔除的臉?

的場景是以下內容:

我計算矩陣饋送到我的着色器,這將繪製紋理甲在一定的位置剔除(前)。當我看到面前的物品時,我可以看到它,但從後面我不能,這是我期望的行爲。現在我想在後面添加「東西」,讓我們說紋理B,這樣當從後面看到對象時,這個其他紋理將以與紋理A相同的位置和方向出現,但現在與紋理B相同。

我認爲,除了用雙面建立一個立方體之外,我可以簡單地「重繪在我之前的物體的頂部」。如果我想旋轉對象,我想我可以假設OpenGL將不會覆蓋紋理A,因爲它不會通過面部剔除測試。這需要一個額外的矩陣乘法來在其自己的軸上鏡像mi對象。但是,如果我只是改變剔除屬性並嘗試繪製它呢?它不是具有同樣的效果,即從正面看不到文本,而是從背後傳遞文本?

這2個選項哪個更好?

(PD:我在iPhone上這樣做這樣的表現每一個位是較舊的設備很有關係)

謝謝。

回答

0

我不確定我是否正確理解了你,但聽起來你正在試圖在這裏畫一個廣告牌?在這種情況下,你應該禁用背面剔除,並在你的片段着色器檢查gl_FrontFacing。根據這一點,您可以翻轉紋理座標並更改紋理(只需綁定兩個紋理並將它們發送到着色器)。這樣你只有一次繪製調用,不必做任何奇怪的技巧或改變OpenGL狀態。

+0

根據您的參考頁面,它似乎不適用於opengl es 2.0。 – Pochi 2013-04-25 01:20:49

+0

@LuisOscar它爲我標記了'Y'?請記住,這是GLSL ES聯機幫助頁,而不是GL ES聯機幫助頁!另外,我不是100%肯定的,但很確定我已經在ES 2項目中使用過它。 – JustSid 2013-04-25 01:49:06

+0

這個工作,非常感謝你。我只關心性能,不會在每個片段着色器中檢查它,而不是在每次繪製調用之前更改一次狀態,而不是更改GPU密度?或者不是每個頂點應用1個乘法矩陣? – Pochi 2013-04-25 03:49:59