Asmodeus
2006-12-05, 12:28:46
Auch die Texture Arrays, die über GL_EXT_texture_array jetzt zur Verfügung stehen wollen bei mir irgendwie noch nicht so richtig. Es lässt sich zwar alles kompilieren und starten, ich bekomme die Texturen, die ich in den Texture Arrays abgelegt habe aber nicht angezeigt. Auf Wunsch kann ich auch Teile des entsprechenden Programmcodes hier posten, aber meine Frage wäre erstmal, ob sich sonst schon jemand damit beschäftigt hat und die Sache erfolgreich zum laufen bekommen hat?
Gruss, Carsten.
Asmodeus
2006-12-05, 17:19:26
Ich kann die Sache jetzt noch etwas genauer darlegen, da ich den ganzen Sachverhalt mal an einem vereinfachten Beispiel getestet habe.
Ich lade eine einzelne Textur der Größe 1024x512 in ein Texture Array. Dies geschied mit dem Befehl:
glCompressedTexImage3DARB(GL_TEXTURE_2D_ARRAY_EXT,0,GL_COMPRESSED_RGBA_S3TC_DXT5 _EXT,1024,512,1,0,524288,PixelBuffer);
Innerhalb des Shaders rufe ich die Textur dann mit folgendem Befehl auf:
gl_FragColor = texture2DArray(Texture,vec3(gl_TexCoord[0].xy,0.0));
Durch die 0.0 als dritte Koordinate greife ich auf den ersten Layer des Texture Arrays zu.
Die daraus resultierende Ausgabe ist vollkommen korrekt:
http://www.inf.uni-konstanz.de/~colditz/TexArray01.jpg
Nun füge ich dem Texture Array eine weitere Textur der Größe 1024x512 zu (enthält zu Testzwecken nur weiß). Ich füge also einen zweiten Layer ein. Dadurch ändert sich nur mein erster Befehl zu:
glCompressedTexImage3DARB(GL_TEXTURE_2D_ARRAY_EXT,0,GL_COMPRESSED_RGBA_S3TC_DXT5 _EXT,1024,512,2,0,2*524288,PixelBuffer);
Den Zugriff im Shader lasse ich gleich, da ich wieder nur auf den ersten Layer zugreifen will. Und obwohl ich im Shader wieder nur auf den ersten Layer zugreife, ist die Ausgabe nicht mehr korrekt:
http://www.inf.uni-konstanz.de/~colditz/TexArray02.jpg
Wie man sieht, wird der zweite Layer irgendwie auch mit angezeigt, obwohl ich nur auf den ersten Layer zugreife. Und ich bin momentan ratlos, da ich nicht weiß, woran es liegt.
EDIT: In meinem durch den Pointer PixelBuffer markierten Speicherbereich mit den Texturdaten liegen die Daten der beiden Texturen richtig angeordnet (also in der richtigen Reihenfolge) vor.
Gruss, Carsten.
vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd.