OpenGL模具缓冲区还是操作?
我不确定这是否可行,但值得一试。我正在使用模具缓冲区来减少延迟渲染器中灯光体积的过度绘制,使用此算法(当相机位于体积之外时):OpenGL模具缓冲区还是操作?,opengl,bit-manipulation,volume,light,stencil-buffer,Opengl,Bit Manipulation,Volume,Light,Stencil Buffer,我不确定这是否可行,但值得一试。我正在使用模具缓冲区来减少延迟渲染器中灯光体积的过度绘制,使用此算法(当相机位于体积之外时): 使用廉价的着色器,将“深度测试”设置为“LEQUAL”后绘制面,并在模具缓冲区中标记它们 使用昂贵的照明着色器,绘制深度测试设置为GEQUAL的正面 这将导致仅对灯光体积内的像素进行着色。绘制多个灯光时会出现此问题。首先,由于状态更改非常昂贵,因此对于每个灯光,反复切换便宜和昂贵的着色器可能不是最好的主意。理想情况下,我希望通过使用廉价着色器渲染8个光体,然后使用昂贵着
是否有任何方法可以使用模具缓冲区以某种方式获得这种或和和行为?如果没有,是否有其他方法可以有效地渲染光体积?要获得ORing更新行为,请使用
glStencilMask
与glu REPLACE
组合使用。要获得ANDing测试行为,请将glStencilFunc
mask
参数与GL_EQUAL
组合使用。在这两种情况下,您都希望ref
参数glStencilFunc
为0xff
太棒了!这正是我想要的。非常感谢你!