簡體   English   中英

OpenGL ES 2.0坐標系

[英]OpenGL ES 2.0 coordinate system

我在iphone上使用opengl es 2.0渲染圖元,我使用了shader和glFramebufferTexture2D渲染到紋理,但是結果不一樣,而且我希望整個坐標都處於混亂中,我給出的頂點數據就是這個V0( -1,-1,-1)V1(0,-1,01),V2(-1,0,-1)我期望的結果應該是這樣的第一個圖像,但結果確實像第二個iamge情況。 我沿着折線找到了整個像這樣的綠色箭頭,請告訴我這是真的嗎? 第一張圖片

第二張圖片

好的,我發現了問題,如果我不使用glFramebufferTexture2D,這個結果就像第三個圖像一樣。那么誰能告訴我為什么呢?

第三

好吧,openGL中的真實坐標系可以正常工作,因此左和底部為-1,右和頂部為1。接下來的事情是渲染緩沖區的原點也位於“左下”角。 因此,發生的情況是,當您向屏幕上顯示圖像時,您希望反轉Y坐標,以使頂部為-1或什至為0,但這僅用於顯示。

隨着紋理的發展,您不應嘗試將其反轉,而應將原點保持在左下角。 您必須了解,一旦繪制到紋理上,這些像素就是RGBA像素數據,當紋理重新用於顯示時(或者如果您讀取了這些像素),從自然角度看,它們將是上下顛倒的。

我不確定這一切是否合乎邏輯,但是通常要做的是反轉場景,以便您看到的是正確的,但是所有這些與GPU上緩沖區的實際順序無關。 例如,如果您能夠簡單地替換緩沖區中第一個像素的RGBA數據,則該像素實際上將位於屏幕的左下角而不是屏幕的左上角。

因此,最好在處理FBO時保持openGL的順序,並且僅在繪制到將顯示在屏幕上的緩沖區時才反轉場景。

暫無
暫無

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

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