2013-06-17 38 views
6

Ich lese über Texture Views in der new Red Book. auf der Seite 322 heißt es:Wann Texturansichten zu verwenden

OpenGL ermöglicht Texturen einen einzigen Datenspeicher zwischen mehreren zu Teilen, die jeweils mit einem eigenen Format und Abmessungen.

(via Texture Views)

Nun meine Fragen sind:

es eine einzige Textur Quelle (in diesem Fall Textur Ansichten) durch mehrere Instanzen verwiesen bedeutet wird?

Wie unterscheidet es sich von der Verwendung des gleichen Texturobjekts, zum Beispiel mit verschiedenen Samplern?

Auch bedeutet es, dass die Texturpixel über Textur Ansicht ändern, werden die Pixel in der ursprünglichen Textur Objekt ändern? (Ich nehme an, die Antwort positiv ist, wie die doc sagt es alias zum Texturspeicher ist)

Antwort

6

Ja, das Teilen eines Datenspeichers bedeutet den Zugriff auf denselben Speicher von verschiedenen Objekten aus. Genauso wie das Teilen eines Zeigers bedeutet, von zwei verschiedenen Speicherorten auf denselben Speicher zugreifen zu können.

Es unterscheidet sich von der Verwendung von Sampler-Objekten darin, dass keine Ähnlichkeiten zwischen ihnen bestehen. Sampler objects speichern Stichprobenparameter. Texturobjekte haben parameters that are not for sampling, wie the mipmap range, swizzle mask und dergleichen. Dies sind keine Sampler-Zustände; Sie sind Texturstatus.

Texturobjekte haben auch eine specific texture type. Verschiedene Ansichten desselben Speichers können different texture types (within limits) haben. Sie können eine GL_TEXTURE_2D haben, die eine Ansicht einer einzelnen Schicht einer GL_TEXTURE_2D_ARRAY Textur ist. Sie können eine GL_TEXTURE_2D_ARRAY von 6 oder mehr Schichten nehmen und daraus eine GL_TEXTURE_CUBE_MAP erstellen.

Sampler-Objekte können das nicht tun.

Texturobjekte haben eine internal format, die definiert, wie der Speicher interpretiert werden soll. Verschiedene Ansichten des gleichen Speichers können different formats (within limits) Sampler das Format nicht beeinflussen.

Sampler-Objekte können das auch nicht.

Können Sie Texturansichten verwenden, um denselben Effekt wie Sampler-Objekte zu erzielen? Nein. Mit Samplern entkoppeln Sie die Sampling-Parameter von Texturobjekten. Auf diese Weise können Sie denselben Parametersatz für mehrere verschiedene Objekte verwenden. Daher können Sie ein Sampler-Objekt ändern und dieses mit mehreren Texturen verwenden, ohne zu jeder Textur gehen und sie verändern zu müssen.

Sie sind zwei verschiedene Funktionen, für zwei verschiedene Zwecke.

+0

Ja, jetzt ist es ziemlich klar.Aber einmal Frage hast du nicht geantwortet: wenn das Ändern der Daten in der Texturansicht es auch in der referenzierten Textur ändert? Basierend auf deinem Satz: "Genauso wie das Teilen eines Zeigers bedeutet von zwei verschiedenen Orten auf denselben Speicher zuzugreifen. " Die Antwort ist wahrscheinlich "Ja"? –

Verwandte Themen