使用OpenGL和GLSL批量生成优化渲染技术的提议

时间:2014-05-23 23:15:23

标签: opengl optimization 3d shader

我正在寻找一种优化场景渲染的排序方法(无论网格数量及其大小),最大限度地减少状态变化,并最大化几何收集,以便最少调用glDraw*个函数。 / p>

在我的提案中,呈现特定批次的最明智选择是函数glMultiDrawElements,因为它需要一组索引(批处理中包含的每个模型一个)来呈现批处理。此外,它应该是空间分区的完美选择(如果在相机的截头锥体中看不到网格,则布尔标志m_IsVisible将变为false。在这种情况下,此特定几何体的索引将不会包括在内,因此不会被渲染。)

所以,这是我的主张,我想与受此主题感兴趣的人分享。为了好奇,我花了一些时间在WORD项目中向你展示我的演示:)

这是我在初始化期间对几何体进行排序所需的标准(按照相关性排序)。他们可以收集在一个枚举中:

enum E__SortingCriteria
{
    GEOMETRY_CRITERION (geometry storage -> VBOs)
    SHADER_PROGRAM_CRITERION
    MATERIAL_CRITERION
    TEXTURE_CRITERION
};

enter image description here enter image description here enter image description here enter image description here

如您所见,状态发生变化,几何收集似乎已经过优化。但是,我担心某些事情可能不正确或有改进的余地。

0 个答案:

没有答案