OpenGL / C ++:使用顶点缓冲区返回前端渲染

时间:2013-04-24 13:59:54

标签: c++ opengl transparency vbo

我目前正在围绕如何在前后顺序中有效地渲染顶点缓冲区中的多边形以使透明度正常工作。

我设置了顶点缓冲区和索引缓冲区,执行glDrawElements渲染,除了透明度导致我当前渲染任意(创建对象的顺序)顺序时,一切正常。

我稍后将实现八叉树渲染,但这只会有助于整个顶点缓冲区渲染顺序(首先渲染的顶点缓冲区),而不是顶点缓冲区中的WITHIN顺序..

我唯一能想到的是每次进行相机位置更改时重新排序我的索引缓冲区,由于每个vbo存储大约65.000个顶点(使用GLushort作为索引以达到最佳vbo大小),因此感觉非常低效。大约1-4MB)..

有没有更好的方法在顶点缓冲区对象中排序顶点(或者更好地表达索引缓冲区对象中的相应索引)?

1 个答案:

答案 0 :(得分:1)

有两种方法(我自己没有使用过任何方法)

  1. 剥皮(双剥)http://developer.download.nvidia.com/SDK/10/opengl/src/dual_depth_peeling/doc/DualDepthPeeling.pdf

  2. 随机透明度 http://www.cse.chalmers.se/~d00sint/StochasticTransparency_I3D2010.pdf

  3. 此外,如果您的对象是凸面剥离,可以通过首先绘制back facesfront faces(使用GL_CULL_FACE并反转法线以在着色器中正确照明)来轻松实现剥离。