2011-09-14 9 views
6

Cada cuadro, mi programa recibirá una nueva imagen de una cámara de video USB. Esta imagen estará inicialmente en la memoria de la CPU. ¿Cuál es el método más rápido en OpenGL para dibujar esta imagen en la pantalla para que ocupe toda la pantalla?¿Cuál es la forma más rápida de dibujar una nueva imagen a pantalla completa en cada fotograma en OpenGL?

Actualmente, estoy cargando los datos de la imagen en una textura y luego renderizando un quad de pantalla completa. Sin embargo, esto no funciona muy rápido en una máquina diferente que probé.

Respuesta

7

Actualmente, estoy cargando los datos de la imagen en una textura y luego renderizando un quad de pantalla completa. Sin embargo, esto no se ejecuta muy rápido en una máquina diferente que lo intentó. ¿Algunas ideas? Gracias.

glTexImage2D hace una inicialización de la textura completa (que quiere decir, la asignación, configuración de objetos y similares). Si solo desea reemplazar la imagen de textura con una imagen del mismo tamaño, use glTexSubImage2D, que es mucho más rápido. Si desea hacerlo de manera asincrónica, eche un vistazo a Pixel Buffer Objects

2

Blitting es una posible solución y existe un thread que lo analiza. Sin embargo, no le dan una gran reseña.

+0

glDrawPixels y la mayoría de las demás operaciones de ráster están obsoletas desde el núcleo en curso de OpenGL-3. – datenwolf

Cuestiones relacionadas