Diskussion:Tutorial Vertexbufferobject

Aus DGL Wiki
Version vom 17. Januar 2009, 14:14 Uhr von Coolcat (Diskussion | Beiträge) (Usage-Flags bei Extension NV_transform_feedback)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Usage-Flags bei Extension NV_transform_feedback

Zunächst eine kurze Erläuterung was die Extension NV_transform_feedback ist. Mit Transform-Feedback kann man die varying Variablen zwischen Vertexshader (bzw. Geometryshader) und Pixelshader abgreifen und in einen oder mehrere Buffer schreiben. Bei den Buffern kann es sich um jede Art von Buffer handeln, also Vertexbuffer, Indexbuffer oder auch TextureBuffer (mit ARB_texture_buffer_object). Das ganze ist also eine Alternative zum FramebufferObject, mit dem Vorteil das man via GL_RASTERIZER_DISCARD_NV den Pixelshader komplett abschalten kann. Außerdem darf man verschiedene Datentypen gleichzeitig schreiben, also z.B. FLOATs und INTs gleichzeitig, wobei man natürlich EXT_texture_integer braucht. Das ganze ist ein Feature von ShaderModel 4.0, in DirectX10 heißt das "StreamOut".

Was ich nun anmerken will ist, dass wenn man Transform-Feedback benutzt, der Ziel-Buffer nach Möglichkeit das Usage-Flag auf GL_STATIC_DRAW haben sollte. GL_DYNAMIC_* ist unglaublich langsam, weil der Buffer (oder eine Kopie davon) dabei im Hauptspeicher liegt. Die ganze Formulierung mit dem "verändern" von Daten stammt wohl aus der Zeit als nur die CPU den Inhalt eines Buffers ändern konnte. --Coolcat 13:14, 17. Jan. 2009 (UTC)