Hello everyone,
I’m starting a new project using OpenGL 1.5 + GLSLANG.
It the project is a parallel volume rendering application running on a beowulf cluster .
The application is uses MPI for communication.
The idea is simple: the volume data is going to be partitionned in an octree, then distributed among the nodes to be rendered separately, and then each subimage is going to be sent to the server node for back to front compositing and user display.
As I see it for the moment, the parallel application is going to look like this:
-
the cluster is running windows 2000 on each node
-
an MPI master task is going to be running on the server node;
-
an MPI worker task is going to be instanciated on each cluster node;
-each worker task will be constituted of two threads :
-a "network" thread that will listen to the network to receive commands from the master node and send locally computed subimages to the master node using MPI calls;
- an "OpenGL rendering" thread that will actually perform the volume rendering.
So the questions are:
-Until now I’ve always used Glut for prototyping with OpenGL. Is it possible to use Glut in a thread of a multithreaded application?
-is it possible to to offscreen rendering using GLUT, without opening any window on the screen?
-if the answers to the two preceding questions is YES:
- is is possible to share the opengl context between the "glut" thread and the "network" thread, so that the latter can receive the modelview matrix, zooming factor, transfer function from the master node and issue OpenGL calls to update the context while the opengl thread is computing the image? (I figured out I could use several checkpoints in the rendering loop to preempt and restart the current rendering pass with updated context whenever the context had changed)
-If GLUT can be used for all that, can the user input be handeled on the master node solely with glut mouse and keyboard call backs, and propagated to the slave nodes?
I know I’m asking a lot of newbie questions, but I’m new to cluster computing, and using glut for all this years kept me away from system-level issues like this.
Thank you very very much for your help.