Autor Beitrag
Aya
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1964
Erhaltene Danke: 15

MacOSX 10.6.7
Xcode / C++
BeitragVerfasst: Sa 30.11.02 02:43 
hi,

hab mal nen paar generelle fragen zu 3D Programmierung...

1. Man hört ja immer wieder von lauter neuen Features bei Grafikkarten (z.B. bei der GeForceFX der PixelShader)... was bedeutet das für den Programmierer??? Ich meine, wie kann ein Programmierer dieses Feature benutzen???

2. zu DirectX und OpenGL... mich würde mal interressieren was die wesentlichen unterschiede zwischen beiden sind, und auch dir vor und nachteile von jedem... also nicht welches besser ist oder so, sondern einfach nur warum viele Spiele in DX geprogt werden und nich in OpenGL... :)

Au'revoir,
Aya~
OregonGhost
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 215



BeitragVerfasst: Sa 30.11.02 11:14 

  1. Pixel- und Vertexshader sind seit DirectX 8 bzw. GeForce3 und Radeon 8500 etabliert, nicht erst seit der GeForce5. Es sind kleine (ich glaube in den Versionen < 2 maximal 128 Befehle erlaubt) Assembly-ähnliche Programme, die vom Grafikchip ausgeführt werden.
    Vertexshader werden für jeden Vertex ausgeführt und können verwendet werden, um Animationen von der GPU und nicht mehr von der CPU berechnen zu lassen.
    Pixelshader werden für jeden sichtbaren Pixel einer Oberfläche ausgeführt und werden typischerweise für Effekte wie reflektierende Wasseroberflächen verwendet. Schau dir ein paar aktuelle Spiele wie No One Lives Forever 2 oder Morrowind an, da läufst du solchen Effekten zwangsweise über den Weg.
    Vertexshader können übrigens begrenzt auch durch die Software emuliert werden, Pixelshader jedoch nicht.
    Du kannst sie nutzen, indem du kleine Textdateien mit dem Code einbindest und sie von DirectX Graphics "kompilieren" (assemblieren) lässt und dann in die Grafikkarte lädst. Das hat den Vorteil, dass du sie zur Laufzeit modifizieren kannst, aber man kann sie, glaube ich, auch fertig kompiliert einbinden.
  2. Ich kann da nur für mich sprechen.
    DirectX hat ein wesentlich klareres, objektorientiertes Design. Ich finde es ist einfach viel angenehmer zu schreiben, zumal DirectX zukunftsweisende Konzepte wie den Vertexbuffer eingeführt hat, während man in OpenGL immer noch entweder jeden Vertex einzeln definiert (in teilweise mehreren Aufrufen) oder in Displaylists definieren lässt. Objektorientiert hat auch den Vorteil, dass die Umgebung die ganzen Funktionsnamen auflistet und man nicht alles im Kopf haben oder nachschlagen muss.
    Davon abgesehen besteht DirectX zum einen aus mehreren Komponenten für Grafik, Audio, Eingabe, Netzwerk etc., die sich alle mehr oder weniger gleich programmieren lassen, im Gegensatz zu OpenGL, das, wie der Name suggeriert, lediglich eine Grafikschnittstelle ist. Zusätzlich bietet DirectX noch extrem umfangreiche Hilfen zum Programmieren an, beispielsweise die D3DX-Bibliothek, die zig Funktionen zur Verfügung stellt, mit der man bequemer programmieren kann, sowie (nur als Beispiel) Matrizen und Vektoren, mit denen man rechnen kann wie mit den arithmetischen Typen.

_________________
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.