在OpenGL ES 2.0中,如果我只想清除颜色缓冲区,是否必须附加和使用任何着色器和程序?
如果我拨打glCLearColor
,glCLear
,然后eglSwapBuffers
,会发生什么?我在规范中没有找到这些信息。我的代码序列是:
glClearColor(0.0, 1.0, 0.0, 1.0);
glClear ( GL_COLOR_BUFFER_BIT );
eglDisp = eglGetCurrentDisplay();
eglSurface = eglGetCurrentSurface(EGL_DRAW);
eglSwapBuffers ( eglDisp, eglSurface );
或者这在规范中没有描述,它取决于OpenGL驱动程序和GPU本身?
答案 0 :(得分:0)
您不需要glClear()
的着色器程序。我在ES 2.0规范中可以找到的最清晰的陈述是这一点,来自第31页的" 2.10顶点着色器"部分:
如果在程序设置为零的情况下调用UseProgram,则当前渲染状态引用无效的程序对象,并且由于任何DrawArrays或DrawElements命令而导致的顶点和片段着色器执行的结果未定义。但是,这不是错误。
由于glClear()
不使用顶点或片段着色器,并且0作为活动程序显式不错误,因此在没有活动程序的情况下调用glClear()
是完全的有效的。