Necesito el cliché del esténcil en 3GS para renderizar la sombra planar, y el desplazamiento del polígono no funcionará correctamente, todavía tiene un problema de lucha z. Así que uso stencil buffer para hacer la sombra correcta, funciona en el emulador win32 gles2 , pero no en el iPhone. Después agregué un efecto de publicación a toda la escena . La memoria intermedia de esténcil no funcionará incluso en el emulador win32 gles2.¿Cómo crear un FBO con buffer de estarcido en OpenGL ES 2.0?
Y traté de adjuntar un buffer de esténcil a FBO, buf la pantalla se convierte en negro. Aquí está mi código,
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.
El eglContext se crea con STENCIL_SIZE = 8, funciona sin un RTT.
Intenté cambiar RenderbufferStorage para el buffer de profundidad y stencil buffer, pero ninguno funciona.
¿Hay algo que me he perdido? ¿El paquete de memoria de la plantilla tiene buffer de profundidad? (No puedo encontrar cosas como GL_DEPTH24_STENCIL8 ...)
Se puede comprobar el valor de retorno de glCheckFramebufferStatus() para obtener más información –
Está COMPLETO, no se informó de ningún error. – Xiaobin
Encontré GL_OES_packed_depth_stencil definido en OpenGLES.framework. Pero no lo encontré en el emulador PVG OpenGLES2 en Win32 :(Intentaré que funcione en el dispositivo mañana. – Xiaobin