Registriert: Fr Jan 04, 2008 21:29 Beiträge: 419 Wohnort: Lübeck
Hi,
Wie der Titel schon sagt, habe ich ein Problem beim Zeichnen von einem VBO. Ich arbeite mit Delphi7 und rufe im OnCreate Ereignis meiner Form eine Methode auf, die das VBO nach der Initialisierung von OpenGl erstellt. Ziel ist es einen 2D-Einheitskreis in das VBO zu schreiben. Die Methode sieht wie folgt aus:
Code:
procedure GenerateCircle(AVertices:byte); var pvec:pvec2; // Zeiger auf array[0..1] of single Radius,Alpha:single; i:Integer; begin if (AVertices > 2) then begin glGenBuffers(1, @VBOCircle); // VBOCircle : gluint; glBindBufferARB(GL_ARRAY_BUFFER, VBOCircle); glEnableClientState(GL_VERTEX_ARRAY);
CircleSides ist die Variable in der die Anzahl der Vertices steht, die angibt, wie viele Seiten der Einheitskeis hat und wird auch an GenerateCircle() übergeben um das VBO zu erstellen. Kann es sein, das meine Grafikkarte(NVidia Geforce 120 GT) keine VBOs unterstützt? Habe extra den aktuellen Treiber installiert (258.96_desktop_64bit), habe da aber das gleiche Problem. Das Betriebssystem ist Windows Vista 64bit. Es würde mich wundern, wenn die Karte VBOs nicht unterstütz, da FBOs und GLsl ohne Probleme laufen und diese ja erst später zum Standard wurden. Alles was ich bekomme ist eine Access Violation in der nvogl32.dll mit folgender Meldung: "Zugriffsverletzung bei Adresse 69AA9410 in Modul 'nvogl32.dll'. Lesen von Adresse 00000000". Der Rendercontext den ich erstelle ist kein 3.x oder 4.x Context sondern der Standard-Context, den man durch CreateRenderingContext() erhält. Merkwürdig ist auch, dass das Programm ohne Macken läuft, wenn ich nur den Aufruf von glDrawArrays() auskommentiere.
vielen Dank schonmal für Rettungsversuche,
sellmann.
Edit: Also das VBO hab ich nun zum Laufen bekommen, indem ich im OnIdle glDrawArrays() erst dann aufrufe, wenn die Methode GenerateCircle() True zurückgegeben hat (ich hab aus der procedure ne "function xy(z:t):boolean" gemacht). Allerdings ist die Anwendung jetzt verdammt lahm. Zumindest funktioniert der Mouselook nicht mehr so flüssig (und dabei hab ich mir soviel Mühe gegeben nen vernünftigen Mousebuffer zu implementieren, damit die Cam sich schön weich bewegt ). Dazu sei gesagt, dass ich den Mousbuffer im OnMouseMoveEvent bearbeite. Kann es daran liegen, oder ist meine Karte tatsächlich zu blöd mit VBOs umzugehen?
Edit2: Also laut Wikipedia soll die Nvidia Geforce 120 GT alles bis inklusive OpenGl3.3 unterstützen und VBOs sind ja seit 1.5 in den Kern mit eingebunden. Warum entsteht dann trotzdem dieser extreme Einbruch? Warum auch nur beim auslesen der Maus? Alle anderen Inputs (z.B. von der Tastatur) werden flüssig verarbeitet.
Registriert: Fr Jan 04, 2008 21:29 Beiträge: 419 Wohnort: Lübeck
Keiner eine Idee, warum seit dem einbinden der VBOs mein Mouseevent so ruckelt? habs auch schon mit der Function GetCursorPos() versucht, aber da gibts kein besseres Ergebnis.
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Ich glaube Du verdrehst da ein paar Dinge. Sieh mal hier: http://www.ozone3d.net/tutorials/opengl_vbo_p2.php, da ist genau beschrieben, wie das zu sein hat. Könnte was mit dem "glEnableClientState" zu tun haben, das vermutlich am völlig falschen Ort steht und ich seh auch gar kein zugehöriges "Disable". Aber ganz sicher weiß ich es natürlich auch nicht.
Registriert: Fr Jan 04, 2008 21:29 Beiträge: 419 Wohnort: Lübeck
Dann würde ich aber auch vorschlagen das Tutorial zum Thema VBO im Wiki anzupassen, denn da hab ich die verwendeten Funktionen her. Wäre ja blöd, wenn das nicht mehr der ordinäre Weg ist, den man gehen sollte mit VBOs, ihn aber dennoch weiter empfiehlt.
Die Links sind aufjedenfall sehr gut! Ich werde mir das ganze gleich mal zu Gemühte führen und heute Abend über mein Projekt ergießen.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Falls Fehler in Tutorials gefunden werden, bitte diese genau eingrenzen und auch beschreiben was falsch ist und warum. Wir beheben das dann bzw. wenn hier ein erfahrener Nutzer ist der das Verifizieren kann, dann kann der auch direkt die stellen am Tutorial korrigieren. Wir wollen mit den Tutorials einsteigern helfen, und keine Verwirrung stiften...
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Flash hat geschrieben:
Falls Fehler in Tutorials gefunden werden, bitte diese genau eingrenzen und auch beschreiben was falsch ist und warum
Nein, es ist nichts Falsches an dem Tutorial. Aber - es sind vermutlich schon mindestens 6 Jahre ins Land gezogen, seitdem es geschrieben wurde. Seither ist ziemlich viel passiert.
Dies ist ein Jahrzehnt gewesen, wo man sich in der Grafikprogrammierung nicht lang auf seinen Lobeeren ausruhen konnte
Mitglieder in diesem Forum: 0 Mitglieder und 7 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.