OpenGl - schwarzes Fenster



  • Prüf die Rückgabewerten von:
    - GetDC: Gibt NULL zurück wenns fehlschlägt
    - ChoosePixelFormat: Gibt 0 zurück wenns fehlschlägt
    - SetPixelFormat: Gibt FALSE zurück wenns fehlschlägt
    - wglCreateContext: Gibt NULL zurück wenns fehlschlägt
    - wglMakeCurrent: Gibt FALSE zurück wenns fehlschlägt

    Dann noch mithilfe GetLastError mehr erfahren

    floorball



  • Danke erstmal für deine Antwort, nur da ich noch eher ein Anfänger in der Programmierung bin, schaffe ich es gerade nicht mir die Rückgabewerten von den externen Funktion zu liefern, bzw. ich musste das mein Projekt fehlerfrei kompiliert wird in VS10 als SubSystem Windows einstellen, nur jetzt habe ich keine Konsole mehr um mir Sachen ausgeben zu lassen, obwohl ich als Projekt eine Konsoleanwendung habe, natürlich könnte ich die Sachen in eine Datei speichern, doch gibt es noch eine elegantere Lösung die Konsole wieder zu bekommen ?

    #Naris#



  • Das wär mir neu, dass man die Konsole deaktivieren muss...
    Ich bin jetzt auch nicht der Experte von VS, aber es gibt da eine Funktion, die heißt OutputDebugString, die hilft evtl.



  • Kriegs leider auch damit nicht hin, da das Rückgabe Format nicht stimmt, heißt kann darüber nix vom Typ HDC, welcher in der Variable verwendet wird, ausgeben. Solangsam denke ich echt drüber nach, das Buch in die Tonne zu drücken, nur hat leider 50 Takken gekostet ...



  • Naris schrieb:

    Kriegs leider auch damit nicht hin, da das Rückgabe Format nicht stimmt, heißt kann darüber nix vom Typ HDC, welcher in der Variable verwendet wird, ausgeben. Solangsam denke ich echt drüber nach, das Buch in die Tonne zu drücken, nur hat leider 50 Takken gekostet ...

    Das Buch bringt einem extrem veraltetes OpenGL bei, das stimmt.
    Aber es erklärt echt gut die mathematischen Grundlagen dahinter, ist in meiner Erfahrung gut als Begleitlektüre für bspw. ein Online-Tutorial geeignet.



  • Habe mich jetzt mal im Bereich "Wissenswertes" nach einem Tutorial für OpenGL 3.0 umgeschaut, nur das einziege Tutorial ist auf English, gibt es da schon etwas in der deutschen Kategorie was gut ist, weil das meiste was ich über Google finde bricht in der Tutorial Reihe aprubt ab.



  • Naris schrieb:

    Habe mich jetzt mal im Bereich "Wissenswertes" nach einem Tutorial für OpenGL 3.0 umgeschaut, nur das einziege Tutorial ist auf English, gibt es da schon etwas in der deutschen Kategorie was gut ist, weil das meiste was ich über Google finde bricht in der Tutorial Reihe aprubt ab.

    Ein vernünftiges Tutorial:
    http://arcsynthesis.org/gltut/

    Und als Programmierer solltest du englisch können. Ist, für mich, eine Grundvoraussetzung. Deutsche Programmierbücher sind meistens grausam.
    Ausserdem versperrst du dir den Weg zu vielen guten Tutorials und Beispielen ohne Englisch Kenntnisse.

    Davon abgesehen, verwende doch einfach SFML oder SDL um ein Fenster zu erstellen. Sich mit WinAPI rumzuärgern ist nicht lustig.



  • Vor allem wenn du ein OpenGL-Tut siehst was noch glBegin und glEnd nimmt, dann schaue es dir gar nicht erst an. Seit vielen Jahren und auch auf mobilen Geräten wird nur noch mit Buffern+Shadern programmiert.



  • 👎 native GUI
    👍 SDL

    Wieso der ganze Aufwand 😕 😕 😕 ?
    Wennst Events brauchst, dass SDL_PollEvent. Einfach geht's nicht!

    SDL2 + GL + GLEW

    int main (int argc, char** argv)
    {
        SDL_Init(SDL_INIT_VIDEO);
    
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
    
        const int w = 600, h = 600;
        SDL_Window *win = SDL_CreateWindow("Sandbox", 0, 0, w, h, SDL_WINDOW_OPENGL|SDL_WINDOW_SHOWN);
        SDL_GL_CreateContext(win);
        glewInit();
    
        glViewport(0,0,w,h);
    
        do {
        // your crap here !!
        SDL_GL_SwapWindow(win); // swaaaaap ...
        } while(foo);
    
        SDL_DestroyWindow(win);
        return 0;
    }
    

    // edit swap in einer Zeile



  • SFML geht auch und würde ich ehrlich gesagt bevorzugen mittlerweile, vor allem wenn man mit C++ arbeitet.


Anmelden zum Antworten