2011-07-10 12 views
13

Quiero hacer algunos pixelart calculados con OpenCL y mostrar esto directamente en la pantalla sin una ida y vuelta de la CPU. Podría usar la interoperabilidad de OpenCL con OpenGL y escribir en los bancos de texturas de la GPU y mostrar la textura con OpenGL. Me preguntaba cuál sería la mejor manera de hacerlo, ya que no necesito nada de 3D, solo 2d pixelart.¿Cómo dibujar los píxeles calculados de OpenCL en la pantalla con OpenGL?

Respuesta

13

La mejor manera sería utilizar la interoperabilidad OpenCL/OpenGL, si su implementación OpenCL lo admite. Esto permite a OpenCL acceder a ciertos objetos de OpenGL (objetos de búfer y texturas/renderbuffers). No podrá acceder directamente al framebuffer predeterminado de OpenGL (es decir, la pantalla), pero podrá acceder a una imagen vinculada a framebuffer object. Desde allí, puede, en OpenGL, hacer un blbuter de framebuffer en el framebuffer predeterminado. Nada tocará la memoria de la CPU.

Tendrás que buscar los detalles en CL/GL interop para obtener más información. La idea básica es crear un renderbuffer en OpenGL (que se vincula a un FBO). Luego pasas ese renderbuffer a OpenCL y haces tus cálculos en el renderbuffer. Una vez que se haya completado, realice un glBlitFramebuffer para copiar los datos desde el buffer de representación al framebuffer predeterminado, luego intercambie los buffers para mostrarlos.

+1

Bueno uno. Conozco este método, pero tengo algunos problemas con la realización CL & GL interoperabilidad. ¿Puedes ver mi problema aquí: http://stackoverflow.com/questions/8789662/interoperability-texture-access-block? – itun

Cuestiones relacionadas