我發現如果使用glFramebufferTexture2D
渲染原始圖像到OpenGL ES 2.0中的紋理,座標系與渲染到默認幀緩衝區時不同。例如:V0(-1,-1),我認爲是在左下方,但如果我渲染到紋理,V0會在右上方。有人可以告訴我爲什麼嗎?OpenGL ES 2.0渲染到紋理座標系
0
A
回答
2
(-1,-1)當然不應該映射到右上角。但它可能是左上角,取決於你如何看待數據。
實際上,(-1,-1)始終是默認OpenGL座標系中的左下角。它看起來容易混淆的原因是因爲紋理在內存中的排列方式。它們從下到上存儲,即存儲器中的第一行是最底部的一行。這與大多數圖像文件格式不同,第一行是最上面一行。這是大多數y-反演問題的根本原因。
一對夫婦的場景中這可能會導致意外的行爲:
您從與存儲數據從上到下格式的文件加載圖像,並將其用於採樣。如果要以原始方向顯示圖像,則需要對底部頂點對應的v紋理座標使用1.0,對頂點頂點使用0.0,這與頂點座標使用的方向相反。對頂部紋理座標使用0.0會將紋理的第一行放在頂部,這與內存中的順序相匹配。
您使用默認設置做了
glReadPixels()
。結果中圖像的行從底部到頂部排列。如果要將數據保存爲從上至下存儲數據的圖像格式,則需要在寫出數據時翻轉行的順序。使用FBO渲染到紋理,然後使用此紋理進行採樣。該紋理具有從底部到頂部排列的行。 v紋理座標現在與您在示例1中使用的紋理座標相比翻轉,紋理數據從上到下排列。
相關問題
- 1. opengl es 2.0紋理座標
- 2. OpenGL ES渲染到紋理
- 3. OpenGL ES 2.0渲染爲多個紋理
- 4. OpenGL ES紋理不渲染
- 5. OpenGL ES渲染到非POT紋理
- 6. OpenGL ES 2.0座標系
- 7. OpenGL ES 2.0 - 渲染到紋理全是黑色
- 8. OpenGL ES 2.0 Framebuffer渲染到紋理iOS:沒有顯示
- 9. OpenGL ES 2.0渲染到具有透明背景的紋理
- 10. OpenGL ES 2.0紋理
- 11. OpenGL版本2.0渲染紋理
- 12. OpenGL 2.0 ES座標
- 13. 在OpenGL ES中渲染紋理
- 14. OpenGL ES 1.1不會渲染紋理?
- 15. Opengl ES紋理渲染概念
- 16. OpenGL ES,你如何渲染PVR紋理?
- 17. OpenGL ES:預渲染爲FBO紋理
- 18. OpenGL ES 2紋理渲染黑色
- 19. 紋理渲染出現沉悶(openGL ES 2.0 iOS)
- 20. OpenGL ES 2.0 - 渲染紋理時減少存儲空間
- 21. 在OpenGL ES 2.0中渲染紋理時的抗鋸齒
- 22. OpenGL - PBuffer渲染到紋理
- 23. 如何在OpenGL ES 2.0中使用2D紋理渲染3d紋理數據?
- 24. OpenGL渲染紋理
- 25. 設置OpenGL ES 2.0紋理
- 26. OpenGL es 2.0 Android紋理
- 27. OpenGL ES 2.0 - 畫紋理?
- 28. 的OpenGL ES 2.0:在紋理
- 29. OpenGL ES 2.0衍生紋理
- 30. opengl es 2.0紋理加載
呵呵,謝謝,這個問題困擾了我很長一段時間,但是現在我好像已經知道這個問題了,所以,非常感謝你! @Reet Koradi – HelloWorld 2014-11-04 08:17:13