Autor Wątek: czy da się zrobic interfejs niezależny od api( directx8,9,10)  (Przeczytany 1672 razy)

Offline pawelad

  • Użytkownik
    • strona domowa

# Marzec 23, 2006, 20:59:14
Od kilku dni bez wielkich postępów próbuję  się  zabrać za  przygotowanie interfejsu mojego silnika.
Problemy mam juz na opakowaniu drivera.
np   
      IDriver* Cdevice::getDriver( Cdevice::Mode  mode )
      {
           IDriver* driver = NULL;

           switch( mode )
         {
              case  D3D8:
                        driver = new Cd3d8Driver( .. );    break;
              case  D3D9:
                        driver = new Cd3d9Driver( ... );   break;
         }
          return driver;
      }


VertexBuffer * Cd3d9Driver::CreateVertexBuffer( ... )
{
          VertexBuffer * buf = null;





}

// modteam edit: ZNACZNIKI [CODE/CODE]
« Ostatnia zmiana: Marzec 23, 2006, 21:10:02 wysłana przez shyha »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Marzec 23, 2006, 21:10:26
No więc? Na czym polegają te problemy?

Offline pawelad

  • Użytkownik
    • strona domowa

# Marzec 23, 2006, 21:53:55
Już wszystko wiem.
Przez przypadek wysłałem niedokonczone.
Pospieszyłem się troche , zobaczyłem jak to jest zrobione w irrlicht i mi się to niepodoba.
Mozemy mieć po prostu IDirect3DTexture8 i już, albo męczymy się i robimy interfejs,klasę dziedziczącą.
W klasach abstrakcyjnych nie mamy doczynienia z typami konkretnymi np IDirect3DTexture , lecą same voidy i inne gówna , a metody na takich typach jak IDirect3DTexture to już nie wirtualne metody klas konkretnych. A ja to chciałem mieć wszystko w interfejsie i niewiedziałem jak pogodzic dwa podobne , ale różne typy zwracane np IDirect3D8Texture i IDirect3D9Texture i  zrobić z tego jakis jeden ,ale sie kurna nie da . Stąd miałem ból głowy. Na szczęscie Irrlicht jest open source, bo bez tego bym przepadł.


Wnioskuję ze opakowanie przynajmniej części api tak żeby nie pakować 10 parametrów z czego połowa domyślnie przyjmuje NULL jest  niezbędne. Tym bardziej że co trochę wychodza nowe wersje directx, a ta następna to już zupełnie coś innego. Więc niezalezny interfejs by się  przydał , ale zrobienie go jest pewnie diabelnie pracochłonne.



Offline SauRooN

  • Użytkownik

# Marzec 23, 2006, 23:07:09
Obejrzyj sobie źródła Ogre'a.

Offline Tauradan

  • Użytkownik

# Kwiecień 01, 2006, 16:07:46
A czy częściowo nie załatwią sprawy efekty?? One co prawda nie pozwolą korzystać z DX8, ale chociaż zmiany w różnych SDK dx9 nie będą takie zauważalne. Jeżeli się mylę to mnie poprawcie.