2009-02-23 15 views

Respuesta

10

Sí! puede usar la ventana del escritorio como la ventana pasó a OpenGL, siempre que no intente mostrar nada en ella;)

Simplemente llame al GetDesktopWindow y pase el resultado como argumento al crear una nueva ventana OpenGL.

+0

¿Esto también funciona para xorg? Cuando lo intenté pareció abrir bien el contexto, pero no intenté abrir un objeto framebuffer y renderizarlo. – Cheery

+0

Sé que también funciona en DirectX, pero nunca intenté usar este truco con xorg –

2

Sí, puede realizar renderizaciones fuera de pantalla con OpenGL, pero la forma exacta de configurarlo depende del sistema operativo. Lo más cerca que puede estar de una forma independiente del sistema operativo sería usar Mesa 3D, pero luego su representación fuera de la pantalla no se acelerará.

+0

¿El último comentario sigue siendo válido? Si entendí correctamente, al menos en Linux, Mesa está cerca de controladores propietarios que comparan la velocidad. –

+0

tipo de. Mesa en Linux permite la representación de software y hardware, sin embargo, los resultados pueden ser sutilmente diferentes entre los dos dependiendo del procesador y del controlador y de los comandos GL enviados. El procesador de programas de Mesa tiende a obtener resultados similares en diferentes sistemas operativos, pero puede no ser necesariamente fácil de configurar en todos los sistemas operativos, y como dijo Ronny, el software solo Mesa no se acelera con las GPU de tarjetas gráficas. (aunque, el moderno código Mesa solo de software tiene una gran cantidad de aceleraciones en las CPU modernas del procesador principal) http://www.mesa3d.org/faq.html –

5

http://www.opengl.org/wiki/Creating_an_OpenGL_Context

De acuerdo a esta página Web, WGL_ARB_create_context se puede utilizar para crear un contexto sin una ventana. Realmente no lo he probado yo mismo. Usé freeGLUT para crear el contexto y luego lo dejé fuera de pantalla en un framebuffer + renderbuffer. Salgo del programa sin llamar a glutMainLoop. Es klugy, pero funciona para mis propósitos.

+0

Para recuperar esta extensión, debe crear el contexto de OpenGL utilizando el extensiones 'WGL' antiguas, que requieren una ventana. – Julien

Cuestiones relacionadas