Vlákno názorů k článku OpenGL a Direct3D (3) od Aiko - 3D grafike sa venujem priblizne 10 rokov. Vacsinou...

  • Článek je starý, nové názory již nelze přidávat.
  • 20. 8. 2004 17:13

    Aiko (neregistrovaný)

    3D grafike sa venujem priblizne 10 rokov. Vacsinou som pouzival Direct3D, zcasti OpenGL, troska Glide.

    Je dost rozdiel ako clovek programuje. Takto to vidim ja:

    1. D3D, vseobecne
    2. OpenGL, vseobecne
    3. OpenGL ARB EXT
    4. D3D, rozsirene (PSH, VSH, ...)
    5. OpenGL NV/ATI EXT

    Zoradil som to takto naschval. Na zaciatku je uplne jednoduche programovanie, spravidla max. 1 textura, vrcholom je pouzitie blendovania. Na konci je "zmykanie" karty - maximaly vykon.

    Kontrolne otazky:

    1. kolko dokazete vyrenderovat maximalne trojuholnikov za sekundu ? (na mojej GF FX 5600 priblizne 70M)
    2. viete kolko trva "naplnenie" textury datami ? (napr. 512x512 ARGB8)
    3. ako spomali vasu kartu vyrenderovanie 30 QUADov cez celu obrazovku ?

    Kazde z tychto rozhrani ponuka ovladanie grafickej karty. Pri rozhodovani ktore rozhranie pouzit treba vziat do uvahy veci ako maximalny pocet trojuholnikov za sekundu, pouzite renderovacie techniky a algoritmy, udrzovatelnost kodu, prenositelnost kodu, ...

    Extensions na ktore sa nadava v OpenGL, su v nenapadnej forme aj v Direct3D. Iba heslovite - Stream Offset, N-patches, Multiple Render Targets, Slope Scaled Depth Bias, Anisotropic Filtering, Two Sided Stencil, Vertex Shader Declaration Types, VertexShader 2.0 a PixelShader 2.0 caps, Floating Point Render Targets/Textures. Pri vsetkych tychto vecia treba OTESTOVAT prislusne caps.

    Cez Direct3D sa vacsinou dostanete ku menej funkciam karty, nez cez OpenGL.

    Typickym prikladom je napr. DOOM3. Na Direct3D by bezal o dost pomalsie, pretoze pouziva OGL extension "depth bounds". Kedze jediny sposob akym sa doteraz dali "zrychlene orezavat" pixely pri renderovani shadow volumes bol scissor, toto rozsirenie vyznamnou mierou prispieva k zrychleniu DOOM3 na NVidia-ckych kartach. Samozrejme to ma iba NVidia. A kedze su teraz dost rozhadani, Microsoft trucuje a nedal to ani do DX 9.0c .

    ---------------------
    Takze na zaver.

    Cela tato debata je uplne o nicom, aj tak sa to nakoniec vykona na tej blbej karte rovnako, a nezalezi na tom ci prikaz pochadzal z Direct3D alebo OpenGL.

    Vacsina programatorov pouziva svoj "wrapper" na graficke API. Prechod na ine API znamena iba prepisanie wrappera.

  • 24. 8. 2004 18:23

    lubos (neregistrovaný)

    Imho asi najhodnotnejsi kus kodu, teda textu :) Z celych troch diskusii a mozno aj clankov.