Hi,
schreibe hier gerade 1 1/2 Testprogramme im Ortho-Modus.
Nun stellt sich aber das Problem, dass die hier problemlos laufen, aber auf einem anderen Rechner (Radion 9500Pro) wird nichts angezeigt, d.h. nur der schwarze Bildschirm von glClear. Woran könnte sowas liegen? Es wird ansich nur ein einziges Quad angezeigt.
In den Ortho-Modus geh ich so:
Code:
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
glViewport(0,0,ScreenWidth,ScreenHeight);
glOrtho(0,ScreenWidth,0,ScreenHeight,-1000,1000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
Vorher wird noch das hier aufgerufen:
Code:
glClearColor(0,0,0,0);
glClearDepth(1);
glDepthFunc(GL_LESS);
glShadeModel(GL_SMOOTH);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glEnable(GL_LINE_SMOOTH);
glEnable(GL_CULL_FACE);
glHint (GL_LINE_SMOOTH_HINT, GL_FASTEST);
Danach wird immer nur die Zeichenroutine aufgerufen:
Code:
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glLoadIdentity;
glTranslateF(x,y,-1);
glBegin(GL_QUADS);
glColor3f(1,0,0);
glVertex3f(0,0,0);
glColor3f(0,1,0);
glVertex3f(150,0,0);
glColor3f(0,0,1);
glVertex3f(150,150,0);
glColor3f(1,1,1);
glVertex3f(0,150,0);
glEnd;
Screen.glSwapBuffers;
Wobei Screen.glSwapBuffers nur SwapBuffers aufruft.
Nein, das war der Fehler, den ich mit dem 2. Upload korrigiert habe. Da habe ich nur überprüft, ob die Near/Far-Werte funktionieren. Das Quad hängt übrigens hin und wieder an der Bildschirmkante fest, aber das ist egal, das ist nur Dekoration sozusagen, uninteressant.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Wie gesagt geht das bei mir, und rein von der Technik her ist ne Radeon9700 ja dasselbe wie ne Radeon9500. Aber evtl. ist auf dem Rechner auf dem es nicht geht ne alte Treiberversion installiert, denn der OpenGL-Treiberteil von ATI ist leider noch nicht soweit wie bei NVidia. Also sieh am besten mal nach was da für Treiber installiert sind (bei mir ists der neue Catalyst 4.5).
"Treiber ist der aktuelle, zwar nicht der offizielle, der von Omega"
Könnten andere Treiber, wo es läuft, vielleicht tollerant gegenüber irgendeinem Fehler, der im Code ist (Initialisierung?) sein?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Hm...es gibt ja diverse gemodette Treiber die eine (meist ältere) Version des OpenGL-Treiber mitbringen (siehe z.B. die NGO-Treiber, die haben eine recht alte OGL-Treiberdatei dabei die in CS schneller sein soll), aber bei Omega ist das AFAIK nicht der Fall (nutze selbst immer die Treiber von ATI selbst).
Ich habe mir aber deinen Quellcode mal genauer angesehen und wirklich nichts gefunden was Probleme machen sollte. Aber in SetDCPixelFormat setzt du sowohl Farbtiefe als auch Tiefenpuffer auf 16 Bit, und da der Treiber versucht was passendes zu wählen könnte (obwohl ich mir das nicht vorstellen kann) da was schiefgehen. Also ersetze am besten die 16 jeweils mit 32, 32-Bit ist ja auf aktuellen Karten eh immer schneller. Und wenn die Karte dann keinen 32-Bit Farb- oder Tiefenpuffer kann, wird automatisch das nächst kleinere Format gewählt (also für Z immer 24-Bit, 32-Bit Tiefenpuffer gibts ja nur bei sehr wenigen Karten).
Ansonsten habe ich noch gesehen das du das Backfaceculling aktiviert hast (warum auch nicht) und der Treiber aber evtl. fälschlicherweise hier GL_FRONT für das zu cullende Face gewählt hat (laut der GL muss es ja GL_BACK sein, aber Treiberschreiber sind ja auch nur Menschen). Deshalb setze mal explizit glCullFace(GL_BACK) und schau nach obs dann geht.
Sonst fällt mir eigentlich nichts ein, zumal der Code sauber aussieht.
Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.