Client/Server and OpenGL

Maybe this question sounds strange, specialy in this forum, but OpenGL is said to follow the client/server model. I know what client/server is all about, but I would like to know how do OpenGL follow this approach. If so, can one direct OpenGL commands from one client to a server on the other end of a network? Any idea?

Theoretically, that depends on your implementation. In practice, it’s more of a conceptual thing. Especially on Windows…

Even if this claim, that OpenGL follows the client/server model, is just a theoretical concept, it must have it’s roots in designing this specification, or maybe they had seen the potential in OpenGL in serving in a multitier application, specially that it’s platform-independent.

Imagine that, instead of processing OpenGL commands immediately on your computer, they are sent over a network to another computer where they are rendered. Using this kind of communication you’ll be able to send highly sophisticated graphics on a per-vertex basis, or maybe on a per-object basis, instead of just sending these 3D scenes on a per-pixel basis which should be much slower.

I was thinking if the rendering context is the key to this. I think the rendering context is the only part of a 2-tier OpenGL application that could be partially moved from the client computer to the host or server. The rendering context is the only link between OpenGL and the operating system, and one can think of it as an adapter between OpenGL and whatever model the operating system uses to render graphics on the screen, e.g. device contexts in MS Windows.

I was wondering what kind of communications happen between OpenGL and the rendering context. What happens behind the scenes, and can one implement a rendering context under some operating system like MS Windows?

OpenGL comes from GL which was the SGI IRIX
rendering mechanism. On those boxes, GL was
the “rendering context”. The determination
of “client state” and “server state” comes
mostly from the fact that IRIX of course had
to allow more than one program (clients) to
run on the same display (server).

As for moving the server across a network,
while someone probably did it (I don’t know
about IRIX 'cause I never owned a SGI box)
it wouldn’t exactly make for a great game of
Quake; imagine what happens to your texture

Of course, you are right bgl. Running OpenGL applcations over a network will make realtime rendering impossible (unless they found a way to increase bit rates) and so we can’t run a game like Quake this way. But I mean that other applications doesn’t need such fast rendering. As for textures, they can be uploaded only once at the beginning of the session.

On SGI machines (at least the ones under IRIX) you can launch an OpenGL application on a remote host but with the display set to your local machine, thanks to the cliend server architecture. Of course, its a lot slower (especially when uploading textures). The original reason for display lists I think was to solve that problem. The OpenGL command could be compiled and stored on the local host’s display.

Do you mean that making multitier OpenGL applications is only possible with SGI IRIX? If not, what part of an OpenGL application can be moved to the server, and the part that should be left on the client? Is it the rendering context, the devive context (in case I’m using MS Windows) or OpenGL commands themselves? I immagine that OpenGL commands should be compiled and sent from the server while the rendering context should be left on the client to interprete the incoming comands and render them through a device context. Am I right?

The question is, what is each part, of the parts mentioned above, exactly responsible for?

its not only possibly with IRIX. Theoretically it should be possible with any X-server that implements GLX. I’ll try it out on my linux box (NVIDIA driver, which is said to support both direct and indirect rendering) and post the results here.

It not possible with windows without any addons(though I even doubt that there is any X-server with GLX for windows)


Well, sorry guys, i cannot test it, because my second linux box has no x installed and my test program needs some other libraries, but i have no drivespace to install them.


opengl over network works “great” if you use the X windowing system. I routinely use my linux box to test opengl apps on our schools onyx2 (running irix). Sure its slow but it works fine when you just have to compile and test…
You can use windows/mac as long as you have a xwindows server on it (that supports opengl, eXodus for mac and Exceed for pc)

Thanks guys, however, does anyone know where can I get X windows server, like Exceed, from, and how can one use it?

well … Exceed is from hummingbird ( Its a commercial procuct though… But it’s said to be among the best (if not THE best) XWindows server for Windows. Have only seen it being used but it looked easy enough :wink:

Exced si realy excelent as an OpenGL PC
client. You need the Exceed 3D extension in d adition to standard Exceed instalation. It us so coled standardized GLX extension to X-windows for the OpenGL comunication.
I use PC as an terminal for SGI and the graphic works even faster on my PC than on
the Solid Impact. Icen such crazy things like stereoscopic visualisation work. Excced ships in adition an Xwindows developing enviroment for PC. You can run an PC OpenGL aplication witch use your oven machine as an clinet in for output this mode .

Thanks again guys, but there are still some unclear points. Suppose that I installed a server like Exceed on some server computer. What portions of my OGL application will change to make it run over a network? Do I issue GL commands on a client computer and they will get rendered on the server? How can I tell OpenGL to send these commands to the server rather than rendering it on the same machine? In other words how can I tell OpenGL to connect to a server? Or is the connection work done by the system’s rendering context? And is there any low-cost alternative to Exeed that suits the needs of a student like me ? Actually I’m trying to decide if I can make this a subject for a project I’m going to do in my college. I’m sorry, but I’m new to this issues.

[This message has been edited by softland_gh (edited 01-09-2001).]