Ho bisogno del buffer stencil su 3GS per rendere l'ombra planare e l'offset del poligono non funziona come prefetto, ha ancora problemi di z-fighting. Quindi io uso il buffer di stencil per rendere l'ombra corretta, funziona sull'emulatore win32 gles2 , ma non su iPhone. Dopo ho aggiunto un effetto post all'intera scena . Il buffer degli stencil non funzionerà nemmeno con l'emulatore gles2 win32.Come creare un FBO con buffer stencil in OpenGL ES 2.0?
E ho provato ad associare un buffer stencil all'FBO, ma lo schermo diventa nero nero. Ecco il mio codice,
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.
L'eglContext viene creato con STENCIL_SIZE = 8, che funziona senza un RTT.
Ho provato a modificare il RenderbufferStorage per il buffer di profondità e il buffer di stencil , ma nessuno di questi funziona.
C'è qualcosa che ho perso? Il buffer stencil include un buffer di profondità ? (Non riesco a trovare le cose come GL_DEPTH24_STENCIL8 ...)
Si potrebbe verificare il valore restituito da glCheckFramebufferStatus() per ulteriori informazioni –
È COMPLETO, nessun errore segnalato. – Xiaobin
Ho trovato GL_OES_packed_depth_stencil definito in OpenGLES.framework. Ma non l'ho trovato nell'emulatore PVR OpenGLES2 su Win32 :(Cercherò di farlo funzionare sul dispositivo domani – Xiaobin