gibt es eine schöne einfache methode Rechteckige Texturen bei OpenGL1.4 zu verwenden?
Da werden die Extensions: GL_ARB_texture_rectangle und GL_ARB_texture_non_power_of_two ja nicht unterstüzt...
Das einzige was mir einfällt ist, die rechteckige Textur in mehrere Quadratische aufzuteilen, aber das ist laaaaaaangsam....
Aya~
PS: Kann es sein, das manchmal GL_TEXTURE_RECTANGLE_ARB funktioniert, obwohl die Extension GL_ARB_texture_rectangle nicht unterstüzt wird?!
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Texture_Rectangles gibt es von ARB, EXT und NV. Mehr oder weniger sind die auch alle gleich. Bis auf, dass bei der ARB Variante die Shader besser unterstützt werden. Ich würde da auf jeden Fall nach allen 3 Extensions ausschau halten. Die werden lauf Delphi3D teilweise auch schon auf OpenGL 1.3 Karten unterstützt. Von den Konstanten etc (außer Shader) musst du sonst nichts weiter beachten.
Und sonst. Na ja. Wenn du das Bild nicht zerlegenmöchtest mach es größer und lass Teile davon unbenutzt. Da du eigentlich auch nicht zu viele Texturen hast sollte das schon fast gehen. Ist zu mindest das einfachste und schnellste. Textur erstellen mit leeren Daten füllen und für das Frame benutzt du eh schon glSubTexImage2D. Nur musst du dann mit den Koordinaten aufpassen. Aber wenn du die Textur nicht skalierst oder so was, dann sollte es auch keine Probleme mit den Rändern geben. Anderenfalls kann es zwecks Texturfilter unschöne Verläufe geben.
hab grad in dem Extension-String von dem PC der die GL_ARB_texture_rectangle Extension nicht unterstüzt dashier gefunden: "GL_EXT_texture_rectangle".. also scheint es damit dann zu gehen.
Aber, gibt es da noch mehr "abarten" von zufällig?
Aya~
EDIT: Gleichzeitig gepostet... Also ARB, EXT und NV, ja? oook danke ^^
ich stehe grad vor einem neuen Problem mit ATI Karten..
Ich benutze im Flipbook RectangleTexturen und GLSL Shader.. funktiniert auf nVidia karten wunderbar... auf ATI Karten allerdings können rechteckige Texturen nicht im Shader verwendet werden.
Gut, für den fall das das kommt überprüfe ich ob GL_ARB_texture_non_power_of_two unterstüzt wird und benutze dann einfach das, so das auch auf ATI Karten die Shader klappen.
Jetzt hab ich aber schon 2 rechnet entdeckt, die:
- GL_EXT_texture_rectangle untersützen
- GL_ARB_texture_non_power_of_two NICHT unterstüzen
- glSlang Version 1.00
- OpenGL Version 1.5
Tja.. hier klappt dann natürlich die Shader sache nicht.. denn mit Rectangle Texturen funktioniert der Shader nicht, und mit GL_TEXTURE_2D bleibt die Textur weiß.
Jetzt kann ich zwar wie schon gesagt entweder die textur in viele kleine aufteilen, bzw einfach auf eine Quadratische vergrößern (gibt es da eigentlich nen limit? also.. 2048x2048 oder so?), aber... evtl weiß noch jemand eine möglichkeit wie ich die Shader auf ATI Karten trotzdem hinbekomme...
EDIT: Hab grad GL_MAX_TEXTURE_SIZE entdeckt Mach es jetzt vorrübergehend erstmal indem ich die Texturen hochrechne.. falls aber noch wer ne tolle andere idee hat, immer her damit
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
dj3hut1 hat geschrieben:
Rechteckige Texturen unter OpenGL 1.4 lassen sich auch problemlos mit gluBuild2DMipmaps verwenden
*hust* Problemlos? Du weißt aber schon, dass er damit flüssige Videos darstellen möchte? Also da kann ich von dieser komischen glu Funktion nur abraten. Das tue ich ja selbst bei einfachen Texturen schon.
Aber ich befürchte auf ATI Grafikkarten wirst du keine andere Wahl haben.
Ich vermute fast das du die Daten auf die Grafikkarte Streamst?
In dem Fall würde ich einfach die Daten in eine Textur kopieren die der nächst größeren POW2 Einheit entspricht, und dann per Texturkoordinaten den entsprechenden Ausschnitt zu verwenden.
Alles andere dürfte zimlich viel Performance kosten, und mir fällt jetzt spontan auch kein Problem ein was gegen die Technik oben spricht.
mfg
Speedmaster
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
In dem Fall würde ich einfach die Daten in eine Textur kopieren die der nächst größeren POW2 Einheit entspricht, und dann per Texturkoordinaten den entsprechenden Ausschnitt zu verwenden.
Das ist ja das was Lossy auch meinte, so mach ich es derzeit auch
Wobei, zum thema kompatibilität... müßen NPot texturen quadratisch sein, oder wird auch z.B. 512x1024 von älteren GraKas unterstüzt?
Registriert: Di Dez 27, 2005 12:44 Beiträge: 393 Wohnort: Berlin
Programmiersprache: Java, C++, Groovy
Achso, eine Möglichkeit, die mir noch einfällt ist, die Pixeldaten mit gluScaleImage auf Power-Of-Two-Format zu skalieren.
In Ayas Fall ist es wahrscheinlich am besten mit einer grossen schwarzen Power-Of-Two Textur zu beginnen, und dann die Videodaten mit glTexSubImage2D in der Textur zu aktualisieren.
Mitglieder in diesem Forum: 0 Mitglieder und 3 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.