Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

159
Vistas
WebGL2: búfer de fotogramas incompleto

Estoy transfiriendo una aplicación C++/OpenGL a WebGL y estoy tratando de crear y configurar un framebuffer.

El framebuffer tiene 3 texturas en las que podemos escribir de tipos: vec2, vec2, uint. (gl.RG32F, gl.RG32F, gl.R32UI)

Así es como inicializo el framebuffer:

 var gbuffer = gl.createFramebuffer(); gl.bindFramebuffer(gl.FRAMEBUFFER, gbuffer); var z0_texture = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, z0_texture); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RG32F, output_canvas.width, output_canvas.height, 0, gl.RG, gl.FLOAT, null); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, z0_texture, 0); var zn_texture = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, zn_texture); gl.texImage2D(gl.TEXTURE_2D, 0, gl.RG32F, output_canvas.width, output_canvas.height, 0, gl.RG, gl.FLOAT, null); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT1, gl.TEXTURE_2D, zn_texture, 0); var n_texture = gl.createTexture(); gl.bindTexture(gl.TEXTURE_2D, n_texture); gl.texImage2D(gl.TEXTURE_2D, 0, gl.R32UI, output_canvas.width, output_canvas.height, 0, gl.RED_INTEGER, gl.UNSIGNED_INT, null); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT2, gl.TEXTURE_2D, n_texture, 0); gl.drawBuffers([gl.COLOR_ATTACHMENT0, gl.COLOR_ATTACHMENT1, gl.COLOR_ATTACHMENT2]);

El framebuffer está incompleto: gl.checkFramebufferStatus(gl.FRAMEBUFFER) devuelve gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT y muestra una advertencia: Framebuffer not complete. (status: 0x8cd6) COLOR_ATTACHMENT1: Attachment has an effective format of RG32F, which is not renderable.

¿Alguna idea de lo que está mal con mi código?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

No quiero renderizar estas texturas. Los estoy usando en el post-procesamiento. Eso es lo que hice en C++ pero no puedo hacer lo mismo en WebGL.

No. No puedes hacer lo mismo en WebGL.

El mensaje de error "El archivo adjunto tiene un formato efectivo de RG32F, que no es renderizable" - significa que gl.RG32F no es un formato renderizable. Por lo tanto, no puede usarlo para un framebuffer. Debe utilizar un formato renderizable en color. Consulte la especificación OpenGL ES 3.0 - Tabla 3.13 ( WebGL 2.0 se ajusta estrechamente a OpenGL ES 3.0).
No puede hacer lo mismo en WebGL que en OpenGL de escritorio . En el escritorio , OpenGL RG32F es renderizable en color. Sin embargo, WebGL se basa en OpenGL ES. En OpenGL ES RG32 no es un formato de representación en color. "color renderizable" no significa que puedas renderizar estas texturas. Eso significa que puede renderizar en una textura usando este formato.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda