我需要在3GS上使用模板缓冲来渲染平面阴影,并且多边形偏移将不起作用,仍然存在z-fighting问题.所以我使用模板缓冲区来使阴影正确,它适用于win32 gles2模拟器,但不适用于iPhone.我在整个场景中添加了一个后期效果.即使在win32 gles2模拟器上,模板缓冲区也不起作用.
我试图将模板缓冲区连接到FBO,因为屏幕变成黑色.这是我的代码,
glGenRenderbuffers(1, &dbo); // depth buffer glBindRenderbuffer(GL_RENDERBUFFER, dbo); glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24_OES, widthGL, heightGL); glGenRenderbuffers(1, &sbo); // stencil buffer glBindRenderbuffer(GL_RENDERBUFFER, sbo); glRenderbufferStorage(GL_RENDERBUFFER, GL_STENCIL_INDEX8, widthGL, heightGL); glGenFramebuffers(1, &fbo); glBindFramebuffer(GL_FRAMEBUFFER, fbo); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, dbo); glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_STENCIL_ATTACHMENT, GL_RENDERBUFFER, sbo); // this make the whole screen black.
使用STENCIL_SIZE = 8创建eglContext,它在没有RTT的情况下工作.
我试图为深度缓冲区和模板缓冲区更改RenderbufferStorage,但它们都不起作用.
有什么我错过了吗?模板缓冲区是否带有深度缓冲区?(我找不到GL_DEPTH24_STENCIL8 ......)