<< >> Title Contents Index

10. OpenGL X-Window-ympäristössä

OpenGL-ohjelmointi X-Window-ympäristössä vaatii GLX-aliohjelmakirjaston GL:n lisäksi. GLX-aliohjelmakirjasto sisältää aliohjelmia ikkunoiden alustuksiin ja avauksiin. Ne hoitavat samoja toimenpiteitä, joita Wiggle-aliohjelmat hoitavat Windows-ohjelmoinnissa.

Ikkunaa alustettaessa täytyy ensin löytää XVisualInfo-tyyppinen tiedosto, joka on yhteensopiva OpenGL:n kanssa. Aliohjelma glXChooseVisual( Display *, int , int * ) palauttaa onnistuessaan osoittimen uuteen XVisualInfo-tiedostoon.

    XVisualInfo *getVisual( Display *dpy, int *config )
    {
      return glXChooseVisual( dpy, 0, config );
    }

Myös X-Window-ympäristössä täytyy luoda oma OpenGL-yhteys, jonka kautta piirtorutiinit voidaan suorittaa. X-Window-ympäristössä yhteys on tyyppiä GLXContext. GLXContext-yhteys luodaan aliohjelmalla glXCreateContext(Display *, XVisualInfo *, GLXContext, Bool). Kun yhteys on luotu ja ikkuna avattu, on yhteys tehtävä aktiiviseksi aliohjelmalla glXMakeCurrent(Display *, GLXDrawable, GLXContext), jonka jälkeen voidaan suorittaa halutut piirtorutiinit.

    Int OGL_config = { GLX_DOUBLEBUFFER, GLX_RGBA, GLX_DEPTH_SIZE, 16,
    GLX_STENCIL_SIZE, 1, GLX_GREEN_SIZE, 1,
    GLX_BLUE_SIZE, 1, GLX_RED_SIZE, 1, None };

    Display *dpy;
    Window win;

    int main( int argc, char **argv )
    {
      XVisualInfo *vis;
      GLXContext OGLContext;
      XEvent event;

      dpy = XOpenDisplay( 0 );
      vis = getVisual( dpy, OGL_config );
      OGLContext = glXCreateContext( dpy, vis, 0, True );
      win = createOGLWindow( dpy, vis );
      glXMakeCurrent( dpy, win, OGLContext );
      XMapWindow( dpy, win );
      ... /* silmukka jossa kutsutaan piirtorutiineja, */
      ... /* hoidetaan ikkunan päivitys ja lopetus. */
    }

Kuvassa 9.2. olevan neliön piirtoon X-Window-ympäristössä tarvittava ohjelmakoodi on liitteessä 3.


<< >> Title Contents Index