Problem mit SetPixelFormat



  • Ich bin gerade dabei, OpenGL mithilfe von NeHe's OpenGL Tutorials zu lernen, jedoch scheitert das ganze schon in lesson 01, und zwar bei folgender Zeile:

    if(!SetPixelFormat(hDC,PixelFormat,&pfd))
    

    Dort tritt ein segmentation fault auf, der Callstack sieht so aus:

    #0 77F655E9	ntdll!RtlEnumerateGenericTableLikeADirectory() (C:\WINDOWS\System32\ntdll.dll:??)
    #1 6948E3F7	DllMain() (C:\WINDOWS\System32\atioglxx.dll:??)
    #2 00000020	??() (??:??)
    

    Voran gehen folgende Funktionsaufrufe, die laut Rückgabewert auch erfolgreich sind:

    static PIXELFORMATDESCRIPTOR pfd={sizeof(PIXELFORMATDESCRIPTOR),1,PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,PFD_TYPE_RGBA,32,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,PFD_MAIN_PLANE,0,0,0,0};
    if (!(hDC=GetDC(hWnd)))...
    if (!(PixelFormat=ChoosePixelFormat(hDC,&pfd)))...
    

    Sieht jemand, wo hier das Problem ist? Interessant ist dabei auch, dass eine compilierte Version einer späteren lesson, die vor rund zwei Wochen, als ich noch eine nVidia-Karte verbaut hatte, noch wunderbar funktioniert hatte, jetzt ebenfalls abstürzt. Liegt das ganze also vielleicht gar nicht am Code, sondern am ATI-Treiber? (im Callstack taucht atioglxx.dll immerhin auf)
    Ich hab in den zwei Wochen zwar erfahren müssen, dass ATI-Karten und/oder die Treiber ziemlicher Schrott sind, aber dass der Aufruf einer mir recht trivial anmutenden OpenGL-Funktion zum Absturz führen sollte, kann ich mir bei einem so namhaften Hersteller wie ATI dann auch wieder nicht vorstellen.
    Naja, ich hoffe, dass jemand dazu eine Idee hat.. sonst komme ich wohl nicht weit bei OpenGL 😡



  • Du muesstest wenigstens verraten, mit welchem Compiler Du arbeitest.



  • Ich verwende MinGW 4.2.1, allerdings ist die "kompilierte Version einer späteren lesson", die ich erwähnt hatte und die jetzt ebenfalls abstürzt, mit dem Borland C++ - Compiler 5.2 kompiliert worden. Ich gehe daher davon aus, dass an dem Problem nicht die Compiler schuld sind.

    Edit: ich verwende den ATI Catalyst 7.9-Treiber... der ist zwar schon von letztem Jahr (weil mit dem neuesten fast gar nichts mehr geht), aber mit OpenGL sollte er ja wohl auch schon damals zurechtgekommen sein.



  • Wenn ich mit Visual-Studio 2005 das entsprechende Projekt aus Deinem Link oeffne, kompiliere und starte, geht das problemlos.
    Unterschiede zwischen ATIs und Nvidias OpenGL-Treibern treten noch nicht in NeHe-Lesson1 zutage.


Anmelden zum Antworten