Registriert: Do Mär 06, 2003 15:27 Beiträge: 281 Wohnort: Bochum
Hallo Leute,
wollte mal Fragen ob man bei einer OpenGL 2.0-unterstützenden Grafikkarte davon ausgehen kann das diese auch min. 4 TextureUnits unterstützt ?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Denke nicht, dass du Pauschal sagen kannst, dass eine Karte ab einer Version X Mind. Y Textur Units hat. Ich meine der erste Treiber den meine EX Radeon 9500 pro bekommen hatte war ein OpenGL 1.4 Treiber. Und da konnte sie auch schon 8 Texturen gleichzeitig. Aber es ist wahrscheinlich, da auch low level karten bereits 6 Texturen können.
Ab OpenGL 1.3 (oder Extension GL_ARB_multitexture) werden mehrere Texturen unterstützt. Mit glGet und GL_MAX_TEXTURE_UNITS kannst du abfragen wie viele unterstützt werden und entsprechend darauf reagieren.
Registriert: So Sep 26, 2004 05:57 Beiträge: 190 Wohnort: Linz
Dazu äussert sich die 2.0-Spezifikation wie folgt:
MAX TEXTURE UNITS
Minimaler Wert: 2
Beschreibung: Number of fixed-function texture units
MAX VERTEX TEXTURE IMAGE UNITS
Minimaler Wert: 0
Beschreibung: Number of texture image units accessible by a vertex shader
MAX TEXTURE IMAGE UNITS
Minimaler Wert: 2
Beschreibung: Number of texture image units accessible by fragment processing
Aber wie bereits erwähnt wurde kannst du wohl davon ausgehen, dass keine ernst zu nehmende Grafikkarte mit OGL 2.0 Unterstützung mit < 4 Units daher kommt.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Lars: Die restlichen 8 werden dann durch Software emuliert oder wie läuft das ab? Meine 9600er ist OGL 2.0 wird mit Sicherheit aber keine 16 Texturen gleichzeitig packen.
Registriert: Sa Nov 13, 2004 11:00 Beiträge: 229 Wohnort: Steinhude
die Zahl 0 bei der minimalspezifikation für vertexshader ist insofernnicht wiedersprüchlich, dass Texturzugriffe im vertexshader nicht in den Spezifikationen vorrausgesetzt werden. Dies gehört ja auch zu den eher neueren Features.
Registriert: So Sep 26, 2004 05:57 Beiträge: 190 Wohnort: Linz
@Lars:
Auf die Gefahr hin das ich mich irre - hatte noch nicht allzu viel mit Shadern zu tun - aber sind Shader-Versionen nicht nur bei DX? Wenn dem nicht so ist, würde es mich echt interessieren wo man näheres dazu findet wie das bei OGL ist. Wenn dem schon so ist stellt sich mir die Frage, ob dies auch auf der Hardware gewährleistet ist oder ob dies nur im Softwaremodus als Vorraussetzung gilt. Obwohl wahrscheinlich viele Grafikkartenhersteller das Minimum von 16 Texture Units bei DX unterstützen würden, kann ich mir nur schwer vorstellen, dass bei einem Standard wie es OGL nun mal ist 16 Units "Vorschrift" sind.
@Extrawurst:
Um ehrlich zu sein habe ich diese Werte nur abgeschrieben, wie bereits erwähnt hatte ich noch nie das Vergnügen mit Shadern zu arbeiten, also musste ich mich mit ein paar Papers begnügen. Aber da die Vertex Ebene nun mal üblicherweise eher wenig mit Texturen zu tun hat, kann ich mir durchaus vorstellen, dass das Minimum noch einge Zeit auf 0 bleiben wird. Der fixe "Ersatzteil" für Fragment Shader hingegen hat schon seit jeher Zugriff auf Texturen, somit ist der wahlfreie Zugriff darauf nur eine Sache von wenigen Drähten :-).
Also wie gesagt, bevor ich auf diese Werte gestoßen bin wusste ich selbst nicht, das hier überhaupt eine Unterscheidung vorhanden ist, aber bei näherer Betrachtung hat dies durchaus Sinn, denn man wird selten alle Texture Units für das Vertex Programm "verschwenden" und da dies auch etwas langsamer ist als eine (Hardware-)Implementierung ohne Texturzugriffe macht es auch durchaus Sinn nur eine beschränkte Anzahl von Texturen im Vertex Programm zu zu lassen, alleine schon wegen dem benötigten Cache (da Vertex-Programme und Fragment-Shader ja parallel ablaufen können sollten).
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.