Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 19, 2025 22:40

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Vertex arrays und Texturen
BeitragVerfasst: Fr Nov 09, 2007 14:20 
Offline
DGL Member

Registriert: Di Okt 23, 2007 10:20
Beiträge: 84
erledigt


Zuletzt geändert von elektrokrach am Di Nov 27, 2007 11:26, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 09, 2007 14:45 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Es gibt bei VA/VBOs keine Möglichkeit im VBO selbst Texturinformationen abzulegen. Wenn man also ein VBO für ein Objekt mit unterschiedlichen Texturen verwenden will sollte man die Dreiecke halt nach Textur sortieren und dann für jede Textur ein VA/VBO mit den Dreiecken die eben diese benutzen anlegen, anders geht es nicht. Eine Sortierung der Dreiecke nach Textur ist sowieso oft die beste Idee, da der Texturenwechsel eine recht aufwendige Aktion ist und man v.a. bei vielen Texturenwechseln so einiges an Performance rausholen kann. Alternativ kann man aber natürlich weiterhin Displaylisten benutzen, die sind immernoch am schnellsten, da der Treiber hier nach Belieben optimieren kann, wobei auch hier eine Sortierung innerhalb der Erstellung nach Texturen keine schlechte Idee ist. Einziger Nachteil einer DL ist der erhöhte Speicherverbrauch im VRAM, wobei die Vertexdaten da letztendlich auch als VBOs abgelegt werden.
Wenn man Shader nutzt (oder voraussetzt) könnte man allerdings über Vertexattribute unterschiedliche Texturen nutzen. Also die Texturen an die TMUs binden, dann als Vertexattribut (oder anstatt eines Attributes kann man die Info auch über Texturkoordianten angeben) angeben welche TMU das Vertex sampeln soll und dann entsprechend im Shader von dieser TMU sampeln. Allerdings wie gesagt nur mit Shadern und die Zahl der Texturen ist dann durch die TMUs der Karte begrenzt.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 09, 2007 15:55 
Offline
DGL Member
Benutzeravatar

Registriert: Di Jul 29, 2003 00:11
Beiträge: 436
Falls du es noch nicht gefunden hast, wäre das hier wenigstens schonmal ein Anfang.
http://wiki.delphigl.com/index.php/glTexCoordPointer


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 09, 2007 16:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also es gibt so etwas ähnliches. Und zwar könntest du es fix auch mit 3D Texturen oder aber Textur Arrays (derzeit nur auf der Geforce 8 verfügbar) realisieren. Beide Lösungen unterscheiden sich nicht großartig bis auf, dass die 3D Textur auch eine Potenz von 2 in der Tiefen haben sollte.

Dabei könntest du zum Beispiel die 8 Texturen einer Landschaft in eine Textur packen und dann mittels U Koordinate dann angaben welcher Layer benutzt werden soll. Allerdings würden bei einer 3D Textur dann die Layer interpoliert werden. Denn Texturenfilterung wirst du nicht abstellen wollen. Und die Texturen müssen alle exakt die gleiche Größe und das gleiche Format besitzen. Denn sie befinden sich dann in ein und dem selben Datenbereich. Sie wären dadurch dann auch nicht einfach so ausstauschbar in dem man eine andere ID benutzt. Sondern man müsste immer einen Speicherbereich erstzen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 09, 2007 20:01 
Offline
DGL Member

Registriert: Di Okt 23, 2007 10:20
Beiträge: 84
wech


Zuletzt geändert von elektrokrach am Di Nov 27, 2007 11:26, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Nov 09, 2007 22:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ich meinte keine Megatexturen. Das ist etwas anderes. Dabei werden ja dynamisch Teile einer riesen Textur hochgeladen. Das was ich meine ist eigentlich nur eine Möglichkeit mehrere Texturen in einer Textur unterzubringen und via Texturkoordinate zwischen den Texturen zu wechseln. Wobei 3D Texturen wohl doch nicht so klever sind. Denn wenn von Textur 1 zu 8 gewechselst wird dann findet dort unweigerlich auch ein Verlauf statt. Selbst dann wenn die Interpolation nicht aktiv ist. Er muss trotzdem über die anderen Texturen.

Von NVidia gibt ein Dokument für TexturArrays. Dort wird allerdings über Shader der wechsel realisiert.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]