Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Directx versioiden erot

Sivun loppuun

Chosen [18.10.2004 20:12:24]

#

Mitähän eroa mahtaa olla esim. dx7:llä ja dx8:lla? Lähinnä noin niinkuin ohjelmoinnin kannalta.

Voinko kääntää dx7:lle tehdyn ohjelman vaikkapa dx9:llä (se kai se uusin on)?

Niitä uusia ominaisuuksia voisi varmaan opetella vähän kerrallaan.

kaviaari [18.10.2004 20:14:43]

#

Periaattessa ei koska DX 7 on viimeisin versio jossa on mukana DirectDraw rajapinta jotka käytetään 2D grafiikkaan. uudemmissa versioissa on käytössä DX3D. Tämä ei tietenkään etsä porttaamista. DX kasilla voit ainakin yrittää seuraavaa. En mene takaamaan mitään, koska en päässy kokeilemaan koodia mutta näin periaatteessa menee.

ID3DXSprite *pSprite = NULL;
RECT SrcRECT;
IDirect3DTexture8 *pTexture;
D3DXIMAGE_INFO SrcInfo;

SrcRECT.left=0;
SrcRECT.top=0;
ScrRECT.right=64; // kuva on 64x64 px iso
ScrRECT.bottom=64;

D3DXCreateTextureFromFileEx(g_pD3DDevice, "C:\moikka.tga" , 0, 0, 1, 0, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, D3DX_FILTER_NONE, D3DX_DEFAULT, 0xFFFFFFFF, &SrcInfo , NULL, &pTexture);

if(FAILED(D3DXCreateSprite(g_pD3DDevice, &pSprite)))
{
// Alustuksessa moka
}

pSprite->Draw(pTexture, &ScrRECT, &D3DXVECTOR2(1.0, 1.0), NULL, 0.0f, &D3DXVECTOR2(x,y), 0xFFFFFFFF);

tejeez [18.10.2004 20:24:09]

#

Kuulostaapa tosi järkevältä tavalta tehdä yks iso polygoni jonka teksturoi. örr.

rndprogy [18.10.2004 20:40:50]

#

Suomipelit.comissa sanottiin muistaakseni että eiskassa piti vielä tehdä alussa niin paljon koodia että siinä tuli helposti useammankin aloittelian ensimmäisen peliprojektin verran koodia. Kun taas siitä eteenpäin Microsoft on lisännyt niihin apukirjastoja.

Chosen [18.10.2004 20:50:35]

#

Kieltämättä tuo Kaviaarin esimerkki näytti niin paljon yksinkertaisemmalta kuin se DirectDraw-koodi, että ilmeisesti se uusien asioiden opettelu kannattaa.

(Voi kun jo saisin sen laajakaistan, että pääsisin latailemaan uudempaa SDK:ta...)

Koipio-ohjelma [18.10.2004 20:53:46]

#

Mistäs noita DirectX:iä voi latailla? Kiinnostaisi hieman kun alan taas saada järjestettyä itselleni aikaa ohjelmointiin...
Ihan kuin joskus ois ollu kiireitäkin xD

Blaze [18.10.2004 21:57:49]

#

Kaikki, mitä ikinä olet halunnut tietää Windows-ohjelmoinnista (ja vielä paljon enemmän): http://msdn.microsoft.com/library/ (IE-only -_-)

kaviaari [20.10.2004 09:28:17]

#

Nojoo tuo mun esimerkki näyttää vaan D3DXSpriten luomisen, tosta puuttuu pre instaloitu g_pD3DDevice. Se alustetaan jokseenkin tähän tapaan.

IDirect3D8 g_D3D; // D3D
D3DDDSPLAYMODE d3ddm; // Näyttötila(ikkunoitu/kokonäyttö)
IDirect3DDevice8 *f_pD3DDevice;

if((g_D3D = Direcet3DCreate8(D3D_SDK_VERSION)) == NULL) // kokeillaan alustaa D3D
{
// Virhe!
}

ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETRES)); // Tyhjennetään strukti näytön asetuksia varten

d3dpp.Windowed = FALSE; // Tässä luodaan kokonäyttö tilaan sovellus
d3dpp.SwapEffect = D3DSWAPEFFECT_FLIP;
d3dpp.FullScreen_RegreshRateInHz = D3DPRESENT_RATE_DEFAULT;
d3dpp.FullScreen_Presentation_Interval = D3DPRESENT_INTERVAL _ DEFAULT;
d3dpp.BackBufferFormat = d3ddm.Format;

if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &g_pD3DDevice))) // Luodaan häkkyrä joka pitää kasassa piirtämistä D3D:llä
{
// Virhe
}

// Tähän tulee sun omaa koodia hurjat kasat

g_pD3DDevice->Reset(&d3dpp); // tuhoaminen

Jos haluat kysyä jotain tarkemmin tai enemmän asioita ota yhteyttä joko maililla kaviaari@mbnet.fi tai ircnetissä kanavalla #sorsalampi.

ja vielä lopuksi miten noita arvoja pitää muokata että saadaan aikaan ikkunoitu sovellus.

d3dpp.Windows=TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = d3ddm.Format;

Chosen [20.10.2004 16:51:05]

#

No, yhä edelleenkin se on yksinkertaisempi. Erityisesti tuo ikkunoitu sovellus. Se ei nimittäin minulta dx7:lla onnistunut.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta