Registriert: Mo Feb 24, 2003 18:19 Beiträge: 165 Wohnort: Cologne
nabend *gähn*,
ich habe das sehr schöne Tutorial für das Render-To-Texture gelesen, habe allerdings ein Problem mit der Texturgröße. Wenn ich die ändern möchte, weigert sich (denke ich jedenfalls) glCopyTexImage2D das
ganze auch in die Textur zu kopieren. Ich brauche die Größe 800x600, 512x512 geht zwar auch, aber wenn ich die Textur auf dem Ganzen Bildschirm habe sieht man das nunmal auch. Hat der kleine red- wieder beim tutorial-lesen nicht aufgepasst oder habe ich nur die falschen Parameter verändert ?
Ach ja, im Moment habe ich den Sourcecode halt zwangsweise auf 512x512 umgeschrieben, deswegen macht es nicht viel sinn den hier zu posten - sorry. aber ich habe mich eigentlich sehr an das tutorial gehalten... ach ja: 1024x1024 geht übrigens auch nicht...
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Hast Du den nur "glCopyTexImage2D" verändert oder auch den entsprechenden Speicher der mit "new" reserviert wird? Zumindest 1024x1024 sollte auf einer neueren Grafikkarte mitgemacht werden.
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Registriert: Mo Feb 24, 2003 18:19 Beiträge: 165 Wohnort: Cologne
Ich hab den source grad vor mir liegen und eigentlich hab ich beides geändert... mit 512x512 läufts ja auch... jetzt habe ich es zwar nochmal mit 1024x1024 probiert, aber wie es aussieht rendert er nur einen Teil der Szene auf die Textur und der Rest bleibt schwarz .
Villeicht sollte ich es ja mal auf einem anderen PC probieren, aber eigentlich sollte es mit meiner Grafikkarte tun (gf4 ti4200). aber es ist ja auch kein problem die textur auf 1024x1024 zu machen, solange glCopyTexImage2D nur mit 512x512 arbeitet...
verdammt, das thema hätte doch eher in die Rubrik "OpenGL" gepasst
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Die Tatsache das nur ein Teil deiner 1024x1024er Textur gerendert wird, liegt in der Tatsache das glCopyTexImage2D nur sichtbare Teile des Viewports in die Textur kopieren kann.
Wenn du also ein Fenster mit nem Viewport in der Größe 800x600 hast und via glCopyTexImage2D in ne 1024x1024er Textur kopieren willst, wird nur der 800x600 Pixel große Teil des Viewports in diese Textur kopiert, der Rest ist undefiniert (meist schwarz).
Die Lösung für dein Problem sind PixeBuffer.Damit erstellst du dir quasi nen Framebuffer im Grafikkartenspeicher der größer sein kann als dein Viewport und kannst diesen dann als Textur rendern.
Schau mal auf http://www.delphi3d.net, dort hat Tom Nuydens ne handliche Klasse gebastelt die den PBuffer kapselt.
P.S. : In der Manpage zu glCopyTexImage2D steht dieses Verhalten übrigens wortgenau drin.Und ganz nebenbei sollte man wann immer möglich glCopyTexSubImage2D verwenden, was deutlich schneller ist.
Registriert: Sa Mai 04, 2002 19:48 Beiträge: 3830 Wohnort: Tespe (nahe Hamburg)
Macht ja nichts, ich kann mich auch noch so dunkel an einen zweistündigen Tobsuchtanfall, als ich ähnliche Probleme hatte und kurz davor war in vollkommender Selbstresignation aufzugeben
_________________ "Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Ich sags doch : Ein Blick in die glManPages ist oft Gold wert, denn folgendes steht dort in der entsprechenden Doku zu glCopyTexImage :
glManPage hat geschrieben:
... If any pixels within this region are outside the window that is associated with the GL context, the values obtained for those pixels are undefined.
Aber zum Glück gibts ja wie gesagt Pixelbuffer die inzwischen auf so gut wie allen Karten genutzt werden können und dazu auch noch jede Menge mehr Funktionalität als das normale glCopyTexImage2D bieten.
Mitglieder in diesem Forum: 0 Mitglieder und 4 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.