我發現如果使用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 2.0座標系
- 5. OpenGL ES 2.0 - 渲染到紋理全是黑色
- 6. OpenGL ES 2.0渲染到具有透明背景的紋理
- 7. OpenGL ES 2.0紋理
- 8. OpenGL 2.0 ES座標
- 9. 在OpenGL ES中渲染紋理
- 10. OpenGL ES:預渲染爲FBO紋理
- 11. OpenGL ES 1.1不會渲染紋理?
- 12. OpenGL ES,你如何渲染PVR紋理?
- 13. 如何在OpenGL ES 2.0中使用2D紋理渲染3d紋理數據?
- 14. OpenGL渲染紋理
- 15. OpenGL ES 2.0衍生紋理
- 16. opengl es 2.0紋理加載
- 17. OpenGL es 2.0 Android紋理
- 18. 設置OpenGL ES 2.0紋理
- 19. 的OpenGL ES 2.0:在紋理
- 20. Android OpenGL ES 2.0紋理
- 21. 計算紋理座標(的iOS /的OpenGL ES 2.0)
- 22. 當渲染爲FBO紋理時紋理座標稍微偏移
- 23. 將字符串渲染到Android和OpenGL ES中的紋理
- 24. onDrawFrame,requestRender和渲染線程? | OpenGL ES 2.0
- 25. 將OpenGL ES 2.0渲染爲圖像
- 26. 在Android OpenGL ES 2.0中渲染紋理原語 - 我在做什麼錯?
- 27. OpenGL的Frambuffers,渲染到深度紋理
- 28. 將OpenGL FBO紋理渲染到GLXPixmap
- 29. OpenGL ES 2.0紋理顯示黑色
- 30. OpenGL ES 2.0中的紋理點?
呵呵,謝謝,這個問題困擾了我很長一段時間,但是現在我好像已經知道這個問題了,所以,非常感謝你! @Reet Koradi – HelloWorld 2014-11-04 08:17:13