Resulta que tengo una aplicación en OpenGL que genera N frames y los dumpea a disco. La aplicación se comporta como un comando, tu lo llamas pasandole unos parametros y te genera un output en disco.
Me gustaría que esta aplicación estuviese en un servidor como un servicio (sería llamada desde el servidor http) el problema es que opengl requiere de una ventana para funcionar, sin la cual no se crea el contexto.
Existe alguna manera de lanzar openGL sin tener el sistema de ventanas activado? supongo que no ya que el driver de opengl va adherido al sistema de ventanas pero quizá alguien sepa algun truco.
Gracias
No requiere una ventana para funcionar, eso es falso, yo tengo una consola de test y para hacer pruebas de render no necesito una ventana, solo el contexto.
Mira en los ejemplos de glew como se crea el contexto de OpenGL. No obstante OpenGL si necesita de aceleracion por hardware (aunque nVidia tiene un software para simular y tal...) que no es comun en tarjetas graficas de servidores.
hablas de una consola abierta en tu escritorio, no de una consola abierta remotamente en un PC que no tiene Xs. verdad?
Un proceso vamos, sin Xs
Quizas el driver obligatoriamente necesite tener las X por algun motivo, pero seria estupido, así que estoy seguro de que podrias tener un servicio, una aplicacion con contexto de renderizado de OGL al cual por TCP/IP le pases cosas.
¿Cómo vas con esto, has conseguido algún avance?
Estaba interesado en el tema porque una vez me encontré con un problema similar desarrollando un GIS.
Diría que buscas esto:
http://en.wikipedia.org/wiki/VirtualGL (http://en.wikipedia.org/wiki/VirtualGL)
Si lo hacer funcionar avisa cómo ;)
Saludos!
Hola, para crear un contexto de opengl se necesitan las X, así que creo que actualmente no es posible poder utilizar la gpu mediante opengl si no se tienen las X corriendo. Aunque supongo que podrás usar perfectamente las glx aunque no tengas ninguna ventana, pero necesitarás algun buffer donde pintar. Si tu tarjeta soporta framebuffer object, creo que podras crear el buffer interno y pintar ahí. Aunque tal vez sólo te ionmteresa hacer cálculos con la gpu y recoger la informacion con glgetmatrixf.
Para crear el contexto no hay que crear ninguna ventana:
Primero hay que buscar un visual con glxChooseVisual
Despues a partir de ese visual crear el contexto con glxCreateContext
Un saludo.
Es para generar videos on demand, cada frame se dumpea a disco donde se comprime a flash video y se envia al cliente. pero creo que al final da igual, dejaré las Xs y ya está.
Gracias a todos.