我尝试使用"模板缓冲区"从纹理中显示渲染的一部分,但我的渲染显示没有任何蒙版效果.
这是一个2D iOS项目,使用OpenGL ES 2.0这是我的代码的关注部分:
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT );
glEnable( GL_STENCIL_TEST );
// mask rendering
glColorMask( GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE );
glStencilFunc( GL_ALWAYS, 1, 1 );
glStencilOp( GL_KEEP, GL_KEEP, GL_REPLACE );
glBindTexture(GL_TEXTURE_2D, _maskTexture);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
// scene rendering
glColorMask( GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE );
glStencilFunc( GL_EQUAL, 1, 1 );
glStencilOp( GL_KEEP, GL_KEEP, GL_KEEP );
glBindTexture(GL_TEXTURE_2D, _viewTexture);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激 !
(和法国开发商一样,对不起我的英文!)
精度:"_ maskTexture"是黑白图片.
我终于用rotoglub和蒂姆的迹象解决了我的问题.谢谢你们俩.
1 /模板缓冲区尚未正确创建.它应该像这样初始化:
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthStencilRenderbuffer);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES,
GL_DEPTH24_STENCIL8_OES, …Run Code Online (Sandbox Code Playgroud)