透明物體蔭試圖渲染使用OpenGL的一些3D對象。要求是我需要隱藏所有透明對象,它們是在另一個透明對象後面的z。所有三角形都在單個三角形緩衝區中,並且會立即繪製。請拋出一些光。呈現在OpenGL
回答
您可以通過排序場景,這是你必須做的反正拿到透明度正常工作是什麼做到這一點。
這裏就是你需要做的:
- 啓用Z緩衝區寫入並測試
- 渲染所有不透明的物體
- 渲染的所有透明物體從前向後。 z緩衝區將防止透明對象顯示在其他透明對象後面。 ()
感謝您的回覆。是的,我可以通過排序透明三角形(從前到後)來實現此目的。但透明物體的所有三角形都是一次繪製的。當我旋轉場景時,效果應該保留。不幸的是,我的任務中不允許排序,因爲我正在處理場景中的三十萬個三角形。你認爲我可以使用一些混合函數的combimation來達到這個目的。 – user942502
我不確定這是可能的,至少在OpenGL 1.1的功能。你可以分成2個緩衝區嗎? – geofftnz
不,我不能分裂,2個緩衝區,因爲我沒有分類,其中三角形形狀的花瓶和三角形形態門在我的三角緩衝。 – user942502
嘗試使用glDepthMask:
//Render all opaque objects
glDepthMask(false); //disable z-testing
//Render all transparent objects*
glDepthMask(true); //enable z-testing (for the next frame)
*技術上講,你應該渲染從後到前的透明物體,但如果你不這樣做很少是明顯的。
- 1. 呈現在OpenGL
- 2. Cocos2dx CCRenderTexture - OpenGL ES2未呈現
- 3. OpenGL上的圖標呈現
- 4. 呈現在OpenGL中使用CAOpenGLLayer
- 5. 在Qt中使用OpenGL呈現QGraphicsScene
- 6. 的OpenGL無法呈現在Windows 8
- 7. OpenGL相當於DirectX呈現器
- 8. OpenGL函數來呈現RGBA值
- 9. 的DirectX11/OpenGL的只呈現紋理
- 10. DDS紋理透明呈現黑色Opengl
- 11. 的Android的OpenGL紋理不呈現
- 12. OpenGL不呈現用戶點擊的點
- 13. 的OpenGL不會呈現三角
- 14. OpenGL Framebuffer呈現紋理不工作
- 15. OpenGL 2D矩形不被呈現
- 16. OpenGL的廣場不正常呈現
- 17. C++ Opengl呈現圖像的一部分
- 18. OpenGL中的快速文本呈現
- 19. VTK - 使用OpenGL ES 2.0呈現工件
- 20. 使用GLKit的按需OpenGL ES呈現
- 21. openGL/GLSL:開花/模糊,呈現給FBO
- 22. OpenGL/OpenTK:顯示FBO在OpenGL控件中的後臺線程上呈現
- 23. Opengl 3D立方體將無法在Windows上正確呈現
- 24. 安卓OpenGL ES 3D立方體在橫向模式下呈現
- 25. 的Android的OpenGL只呈現在屏幕的一半
- 26. 可憐的圖像質量呈現UIImage與opengl在ipad上
- 27. 在Android上使用GLSL ES(OpenGL ES 2.0)呈現茶壺
- 28. OpenGL ES - 在屏幕上呈現150,000紋理的最佳方式
- 29. 在OpenGL上下文中呈現Win32小部件
- 30. 我怎麼能呈現在用戶的OpenGL ES文本得分
你能對你的對象是如何透明意見和OpenGL的是什麼版本的()你正在處理? – masebase
我正在處理opengl 1.1 ..例如有一個玻璃花瓶裏面有玻璃門的房間。用戶應該只能通過玻璃門看到房間內的不透明物體,如木製傢俱,而不能看到房間內的玻璃花瓶。 – user942502