OpenGL unter Linux



  • Hallo!

    Wie kann ich OpenGL (Mesa) unter Linux (direct über die Xlib, kein GLUT) im Fullscreen-Modus laufen lassen?

    Derzeit verwende ich für den Fenstermodus folgenden Code:

    XVisualInfo* visualInfo; 
    Colormap colorMap; 
    XSetWindowAttributes setWindowAttributes; 
    GLXContext openGLContext;
    XEvent event; 
    GLboolean needRedraw = GL_FALSE, recalcModelView = GL_TRUE; 
    int tmp;
    
    Display* displayHandle = XOpenDisplay(NULL);
    glXQueryExtension(displayHandle, &tmp, &tmp);
    int attributes[] = {GLX_RGBA, None};
    visualInfo = glXChooseVisual(displayHandle, DefaultScreen(displayHandle), attributes);
    openGLContext = glXCreateContext(displayHandle, visualInfo, None, GL_TRUE);
    colorMap = XCreateColormap(displayHandle, RootWindow(displayHandle, visualInfo->screen), visualInfo->visual, AllocNone);
    setWindowAttributes.colormap = colorMap;
    setWindowAttributes.border_pixel = 0;
    setWindowAttributes.event_mask = ExposureMask | KeyPressMask | StructureNotifyMask;
    openGLWindow = XCreateWindow(displayHandle, RootWindow(displayHandle, visualInfo->screen), 0, 0, resX, resY, 0, visualInfo->depth, InputOutput, visualInfo->visual, CWBorderPixel | CWColormap | CWEventMask, &setWindowAttributes);
    XSetStandardProperties(displayHandle, openGLWindow, "ERC05 Engine", "ERC05 Engine", None, NULL, 0, NULL);
    glXMakeCurrent(displayHandle, openGLWindow, openGLContext);
    XMapWindow(displayHandle, openGLWindow);
    

    Was muss ich ändern damit es im Fullscreen-Modus läuft bzw. kennt jemand eine Seite wo das erklärt wird? Ich möchte nicht nur das Fenster auf Fullscreen ausdehnen, sondern wirklich umschalten, so dass ich auch die Auflösung bestimmen kann.

    Danke schonmal!

    mfg



  • Gibts denn einen Grund warum Du auf Glut oder SDL verzichtest? Wär doch viel einfacher..



  • [quote]Gibts denn einen Grund warum Du auf Glut oder SDL verzichtest?[/quote]

    Ja. Ich will möglichst wenige Abhängigkeiten. Außerdem mag ich GLUT nicht weil es die Kontrolle über das Programm durch seine eigene Message-Loop komplett übernimmt.



  • Christoph Redl schrieb:

    Gibts denn einen Grund warum Du auf Glut oder SDL verzichtest?

    Ja. Ich will möglichst wenige Abhängigkeiten. Außerdem mag ich GLUT nicht weil es die Kontrolle über das Programm durch seine eigene Message-Loop komplett übernimmt.

    Darum mag ich Glut auch nicht und benutze SDL 😉 Und mit SDL/OpenGL hast Du keine Anhängigkeiten die Probleme machen sollten.. Beides ist zudem BS-unabhängig.

    Ohne SDL hab ich k.A. wie Du den Fullscreen-Modus hinkriegst.



  • durito
    Ich denke er meint zwischen Abhängigkeiten nicht das Thema Plattformen sondern Lizenzen. Wenn ich ehrlich bin, das ist für mich auch ein Hauptgrund wieso ich alles selber schreibe damit ich mich nicht an irgendeine dieser Bracken Opensource Lizenzen halten muss. Nebenbei ist der Lerneffekt viel höher und man kann es später viel leichter verschärbeln ohne das jemand ankommt und sagt: "Du hast meine Lib benutzt, jetzt will ich Geld sehen!" 😉



  • Patrick: Hä? GLUT ist doch noch nicht mal OpenSource. Und OpenGLUT und freeglut stehen unter der MIT-License, die auch die Verwendung in kommerziellen Programmen abdeckt.

    Und OSS-Leute werden idR kein Geld wollen, sondern nur, dass Du Dich an die Lizenzbestimmungen hältst. (Egal, ob Du Dein Programm verkaufst oder gratis weitergibst.) Da die meisten OSS-Libraries aber unter BSD-License-ähnlichen Lizenzen oder aber unter LGPL stehen, wird das für Dich nie ein Problem sein, nichtmal _wenn_ tatsächlich jemand Deine Software kaufen möchte und Du die Sourcen nicht so gerne hergeben magst.



  • nman
    Ich red ja auch nicht von GLUT sondern von SDL. GLUT fällt sowieso überall flach, da es ein Flopp ist, kann man definitiv sagen. Lam, schlechtes unüberdachtes System und einfach zu überladen.

    GPL und andere Lizenzen schön und gut, aber selbst die GPL hat seine Nachteile und für viele Unternehmen sind manche Klauseln einfach ein Todesurteil. Ich möchte dieses Thema jetzt nicht dazu verwenden hier über Lizenzen zu debattieren, das muss jeder für sich selber entscheiden. Außerdem ist neuerdings die GPL und LGPL einfach nur noch eine Hypelizenz geworden die viele noch nicht mal lesen, geschweige denn verstehen.

    Sei es GPL oder BSD, MIT usw. am besten ist man dran wenn man alles selber gemacht hat und sich nicht an diese (meist total bescheuerten Klauseln) halten muss.



  • Patrick schrieb:

    Ich red ja auch nicht von GLUT sondern von SDL.

    Steht unter der LGPL, darfst Du also auch für kommerzielle Programme verwenden.

    Sei es GPL oder BSD, MIT usw. am besten ist man dran wenn man alles selber gemacht hat und sich nicht an diese (meist total bescheuerten Klauseln) halten muss.

    Ach, Blödsinn. Wenn ich für jedes Programm das Rad neu erfinden muss, komme ich ja gar nicht mehr dazu, meine Arbeit produktiv zu erledigen.
    Wenn Du mir sagen würdest, was an den oben genannten Lizenzen "total bescheuert" sein soll, wäre ich Dir im übrigen sehr verbunden.


Anmelden zum Antworten