Fragen zu GL



  • Hallo,
    einiges beschäftigt mich da noch über OpenGL...

    1. Gibt es eine Seite(auf Deutsch),die alle OpenGL-Befehle beeinhaltet?
    Ich habe schon zwar eine,aber diese ist leider auf Englisch.

    2. Schon das Thema "Schwarzes Fenster programmieren" ist für mich schwer zu erlernen,denn da steckt massen an Arbeit diese ganzen Befehle auswenig zu lernen und sich an diese zu gewöhnen.Gibt es eine Möglichkeit bzw. einen Link zu einer Seite,der mir genauer diese Befehle erklärt und begründet?
    Also so ein Beispiel,damit ihr wisst,worum es mir geht:
    (Anfang des Codes...)

    HGLRC           hDnRC=NULL;           //MG36                 
    HDC             FDc=NULL;         //G3                 
    HWND            hWDd=NULL;      //G36C                     
    HINSTANCE       howInistance; //Sniper
    bool    armor_for_un[256];       //Mein Array zur Panzerung                    
    bool    active=TRUE;            //Aktivität                   
    bool    fullscreen=TRUE;        //Vollbild
    

    3. Was sollte ich nach diesem Schritt weiterlernen,etwa Polygone?

    MfG. Martin



  • Nimm die Tuts von Nehe, ich denke das ist etwas für dein Gemüt.

    Das was du übrigens suchst ennt sich Api Referenz von OpenGl
    und niemand lernt all diese Befehle auswendig, dafür schaut man einfach irgendwo nach. Und wenn du ne Frage zu einer Funktion hast schau in der Api Reference oder google danach.
    Englisch sollte man aber schon beherschen.

    Nehe findeste über google.

    PPS: Die ganzen Dinger die da mit H anfangen haben mit der erstellung des Fensters zu tun und so ... falls es dich interessiert solltest du WindApi lernen, ansonsten einfach benutzen ^^



  • Martin Braun schrieb:

    HGLRC     hDnRC              = NULL;      // Handle zu einem Rendering Context
    HDC       FDc                = NULL;      // Handle zu einem Device Context
    HWND      hWDd               = NULL;      // Handle zu einem Window
    HINSTANCE howInistance;                   // Handle zu einer Instance
    
    bool      armor_for_un[256];
    
    // bool      active             = TRUE;   // solltest du nicht machen
    // bool      fullscreen         = TRUE;   // sondern:
    bool      active             = true;
    bool      fullscreen         = true;
    

    BTW: statt NULL kannst du auch einfach 0 schreiben, ist moderner.

    Greetz, Swordfish



  • Martin Braun schrieb:

    2. Schon das Thema "Schwarzes Fenster programmieren" ist für mich schwer zu erlernen,denn da steckt massen an Arbeit diese ganzen Befehle auswenig zu lernen und sich an diese zu gewöhnen.

    Die Initialisierung von OpenGL ist von der verwendeten Platform abhängig, also auf fast jedem Betriebssystem anders. Du musst nicht unbedingt verstehen, wie dein Betiebsystem OpenGL implementiert, bzw. es auswendig lernen. Schlau dir lieber genauer an, wie OpenGL funktioniert.

    Eine Liste mit allen OpenGL funktionen findest du auf http://www.opengl.org/
    Ein Liste mit allen Windows API Funktionen findest du auf http://www.msdn.com



  • Martin Braun schrieb:

    //MG36
    //G3
    //G36C

    Wie viele Punkte haste in Battlefield?



  • HGLRC           hDnRC=NULL;           //MG36                
    HDC             FDc=NULL;         //G3                
    HWND            hWDd=NULL;      //G36C                    
    HINSTANCE       howInistance; //Sniper
    bool    armor_for_un[256];       //Mein Array zur Panzerung                    
    bool    active=TRUE;            //Aktivität                  
    bool    fullscreen=TRUE;        //Vollbild
    

    HGLRC: OpenGL ist eine Statemachine - wenn du einen bestimmten Befehl aufrufst so kann das verschiedene Auswirkungen haben in Abhängigkeit des letzten eingenommen Zustandes. Z. B. du setzt OpenGL in den Zustand WIREFRAME -> wenn du jetzt Dreiecke malst, dann werden die nur als Drahtgittermodell gerendert, ohne das du es explizit noch einmal sagst. Erst wenn der Zustand wieder auf SOLID_FILL (oder wie der heißt) gesetzt wird, werden aus Drahtgittermodellen wieder ausgefüllte Polygone. Genauso ist es z. B. mit der Beleuchtung, usw. Die große Frage ist jetzt allerdings wo werden diese Zustände den alle abgespeichert? Eine andere Frage ist was soll passieren, wenn in 2 Fenster gleichzeitig gerendert werden soll - in eines mit WIREFRAME in das andere mit SOLID_FILL - mmh.... 😉 jemand muss sich doch die ganzen Zustände merken? Die Idee: eine Datenstruktur in der man sich das alles merkt muss her - die braucht jetzt nur noch einen coolen Namen. Wie wär’s mit Zustände. Mmh... nö klingt uncool und Umlaute machen vielleicht Problem.. nennen wir es doch einfach Rendering Context - Preisfrage für was steht das RC in HGLRC? Für was das GL? H steht für Handle. Das heißt du hast praktisch nur einen verweis auf die Datenstruktur und nicht die Datenstruktur selber in der Hand, was aus gründen wie weniger Kopieraufwand sinn macht

    HDC: H = Handle, D=Device, C=Context. Handle ist immer ein Verweis auf etwas - Das war auch bei HGLRC so. HGLRC ist eine Datensturktur die von Microsoft für die Unterstützung von OpenGL eingeführt wurde und MS hält sich an seine Konventionen wie ein großes H vor allen… (siehe Ungarische Notation), aber das ist nebensächlich. D=Device ein Device ist ein Gerät wie z. B. Grafikkarte oder Druckerschnittstelle. Context=der Kontext beschreibt ob es sich um einen Drucker, Grafikkarte oder einen Toaster handelt. Ein Device Context kommt von der GDI und ist immer etwas in das du hineinmalen kannst – z. B. kannst du einen Device Context auf den Drucker legen und wenn du dann TextOut(hDC,..) schreibst fängt der Drucker auf einmal an den entsprechenden Text auszugeben. Die Idee hinter dem Device Context ist ganz einfach. Man wollte grafische Ausgabe ermöglichen, egal ob auf Drucker oder Monitor, mit einer einheitlichen, geräteunabhängigen Schnittstelle: Vorteil du musst dich nicht mir irgendwelchen Gerätespezfischen Farbmodellen herumschlagen, oder gerätespezifischen Behandlungen kümmern. Willst du etwas in ein Fenster zeichnen, dann holst du dir den DeviceContext auf das Fenster und rufst GDI oder GDI+ Funktionen auf – benutzt du aber OpenGL so musst du den Device Context von deinem Fenster an OpenGL weitergeben.

    HWND: Handle auf eine Fenster – wenn du CreateWindow aufrufst so gibt dir das eine Art Referenz auf das Fenster zurück. Diese Referenz ist vom Typ HWND. Diese Referenz kannst du nutzen um z. B. das Icon deines Fenster zu verändern, den Titel, die Farbe, usw.

    HINSTANCE: Jede Windows Anwendung bekommt eine eindeutige Kennung = diese wird durch die HINSTANCE (oder das worauf es verweist) repräsentiert.



  • xindon schrieb:

    Martin Braun schrieb:

    //MG36
    //G3
    //G36C

    Wie viele Punkte haste in Battlefield?

    He he... da kann man sich ja schon was vorstellen 😃
    Also ich habe jetzt den Rang 1st Lieutenant und bin Scharfschütze :p
    ahja :

    EA Platzierung-> 7821

    Und zurück zum Topic 🙂



  • Martin Braun schrieb:

    xindon schrieb:

    Martin Braun schrieb:

    //MG36
    //G3
    //G36C

    Wie viele Punkte haste in Battlefield?

    He he... da kann man sich ja schon was vorstellen 😃
    Also ich habe jetzt den Rang 1st Lieutenant und bin Scharfschütze :p
    ahja :
    EA Platzierung-> 7821

    Ah okay cool, bin auch 1st Lieutenant, und hab knapp 90000, spiel aber schon seit 2 Monaten nicht mehr....


Log in to reply