texture texturas shaders learn example ejemplos opengl textures

texturas - texture in opengl c++



cómo usar glCopyImage2D (2)

Si glReadPixels es demasiado lento para usted, entonces glCopyTexImage2D y glCopyTexSubImage2D no serán mucho más rápidos. En plataformas con soporte para objetos framebuffer, como iOS, la forma recomendada (es decir, más rápida) de obtener datos de imágenes renderizados por GPU en una textura es usar esa textura como el archivo adjunto de color para un objeto framebuffer y representarlo directamente en él. Dicho esto, si aún desea seguir este método, esto es lo que debe hacer para solucionarlo:

Primero, está pasando argumentos malos a glCopyTexImage2D . El tercer argumento, internalformat , probablemente debería ser GL_RGBA lugar de 0 . Si glGetError después de llamar a glCopyTexImage2D , probablemente habrás obtenido GL_INVALID_OPERATION . Consulte las páginas de manual de OpenGL ES 1.1 para glCopyTexImage2D y glCopyTexSubImage2D .

En segundo lugar, como ya ha observado, glCopyTexImage2D requiere que sus argumentos de ancho y alto también sean potencia de dos. La forma correcta de manejar esto es asignar una imagen de textura usando glTexImage2D (puede pasar NULL para los pixels aquí), luego use glCopyTexSubImage2D para copiar el contenido de su framebuffer en un rectángulo. Tenga en cuenta que glCopyTexSubImage2D no toma un argumento de formato internalformat , ya que está actualizando un subrectangle de una textura, utiliza el formato existente de la textura.

Para el registro, glGetTexImage no existe en OpenGL ES 1.1 o 2.0, por lo que está obteniendo una declaración implícita.

Estoy intentando algo como

glEnable(texture_2d) glBindTexture glCopyTexImage2D glDisable(GL_TEXTURE_2D);

Creo que glCopyTexImage2D no funcionará con un poder de dos imágenes, así que ese es un problema; También probé glReadPixels, pero es demasiado lento para mis propósitos.

¡Gracias!