2009-04-27 156 views
0

由於我已經開始學習渲染到紋理,我越來越明白glCopyTexSubImage2D()將倒轉屏幕的指定部分。我嘗試了幾個想到的簡單的事情,以防止/解決這個問題,但找不到一個優雅的解決方案。修復glCopyTexSubImage2D顛倒紋理

  • 有兩個問題與渲染紋理到屏幕前做:: glScalef(1.0F,-1.0F,1.0F): 1,我有我使用這個每次做紋理。 2,我主要使用2D圖形,並且關閉GL_BACKsides背面剔除。儘可能多的我很樂意保存這個開關。

  • 嘗試將矩陣模式切換到GL_TEXTURE並在捕獲時執行:: glScalef(1.0f,-1.0f,1.0f)轉換,但結果相同。 (我猜的紋理矩陣只對glTexCoord有影響電話?)

所以,如何解決紋理的上下方向與glCopyTexSubImage2D拍攝的?

回答

1

你打算如何使用紋理圖像?實際上,試圖將它們翻過來通常需要比將代碼移到其他地方更多的工作。

如果您嘗試在不導出圖像的情況下使用圖像,只要翻轉紋理座標,無論您使用結果如何,都將是最有效的方法。

如果您要導出它,那麼您要麼在渲染後自己翻轉它們。

在相關說明中,如果您在製作2D遊戲,爲什麼打開背面剔除?

+0

好點。這是一個猜測優化的例子,我很害怕=)另外,我不需要爲這個遊戲翻轉紋理 - 不管怎樣,直到現在。我仍然看到它會變慢多少,但同時,將背面剔除和翻轉看起來似乎是最簡單和最優雅的解決方案。謝謝! – zyndor 2009-04-28 05:57:57

0

如果我的理解是正確的,這取決於你的起源在哪裏。這個函數似乎假定你的原點位於左下角,而大多數二維的東西假設左上角的原點,這就是爲什麼它看起來顛倒了。

我想你可以改變原點到左下角,做捕捉,然後把原點改回到左上角並在做交換之前再次渲染。但是,這是一個可怕的解決方案,因爲你實際上渲染了兩次,但如果你不打算每一幀都這樣做,它可能會很好。

-1

使用glReadPixels()複製到緩衝區,翻轉圖像,然後使用glTexImage2D()將其寫回。