Opengl es 实施仅深度通行证的最小步骤
我有一个现有的OpenGL ES 3.1应用程序,它通过颜色和深度/模具附件将场景渲染到FBO。它使用常用的绘图方法(glBindBuffer、GLDrawArray、glBlend*、glStencil*等)。我现在的任务是创建一个仅深度的过程,该过程使用与主过程相同的值填充深度附件Opengl es 实施仅深度通行证的最小步骤,opengl-es,Opengl Es,我有一个现有的OpenGL ES 3.1应用程序,它通过颜色和深度/模具附件将场景渲染到FBO。它使用常用的绘图方法(glBindBuffer、GLDrawArray、glBlend*、glStencil*等)。我现在的任务是创建一个仅深度的过程,该过程使用与主过程相同的值填充深度附件 我的问题是:实现这一点和避免GPU做多余工作(不必要的着色器调用等)所需的最少步骤数是多少?停用颜色附件是否足够,或者我是否还必须设置空着色器、禁用混合等?我假设您在运行主过程之前需要此功能,否则您只需保留主过程
我的问题是:实现这一点和避免GPU做多余工作(不必要的着色器调用等)所需的最少步骤数是多少?停用颜色附件是否足够,或者我是否还必须设置空着色器、禁用混合等?我假设您在运行主过程之前需要此功能,否则您只需保留主过程深度 飞行前
专用缓冲区和优化着色器也可用于阴影映射和其他此类仅深度技术。Ok附加问题:使用glColorMask是否可以为片段着色器节省任何这些步骤(因为如果着色器不写入frag深度,驱动程序应该知道片段着色器很简单,对不对?),使用彩色遮罩可能会优化这一点。不过,顶点着色器中任何无意义的非位置内容都可能仍然会被执行。只需专门化—这是更多的开发工作,但这是“正确”的答案,将提高运行时性能。