Suche für DirectX-8: simpler TexturBlit (2D)

calgonite

Grünschnabel
Hallo,

seit längerer Zeit suche ich nach einem Beispiel-Programm für DirectX / MS Visual C++6, mit dem man ganz simpel eine rechteckige Textur (kann ruhig Pixelsize 2_hoch_n haben) auf den Screen „blitten“ kann. Wichtig ist hierbei, dass ich Grösse / Skalierung und Bildschirm-Position selber bestimmen kann. ;-)

Nett wäre es, wenn man die Transparenz einstellen könnte, aber nicht weltentscheidend. Ich habe versucht es aus diversen Tutorials abzuleiten, bisher klappte es nie.

Das kann doch nicht so schwer sein. :mad:

Gruesse,

Chris
 
http://www.gamedev.net

Guck nach einen tutorial für DirectDraw...
bzw. DirectGraphics 2D

tip: benutz DirectX 7... In directX 8 und 9 wurde dir DirectDraw unterst[tyung entfernt, daher muss man mit Direct 3D erstmal entsprechende vorkehrungen Treffen um überhaupt 2D arbeiten zu können.
 
Wie Groesse / Skalierung einstellen

Ich habe ein NeXe dieses Tutorial gefunden, leider nicht „richtig 2D“, also ortho-projektion, aber naja.

Gibt es ausser der 3D Koodinaten-Translation eine weitere Möglichkeit der Skalierung?

Hier ein Teil vom Source:


http://nexe.gamedev.net/tutorials/ViewTutorial.asp?tutorialfile=Pages/Tutorial6.myxml


// from Nexe Tutorial 6
// Matrix code


D3DXMATRIX mat;

D3DXMatrixPerspectiveFovLH(&mat, D3DX_PI/6, WINDOW_WIDTH/WINDOW_HEIGHT, 1.0, 100.0);
g_pDevice->SetTransform(D3DTS_PROJECTION, &(D3DMATRIX)mat);

D3DXMatrixIdentity(&mat);
g_pDevice->SetTransform(D3DTS_WORLD, &(D3DMATRIX)mat);

// D3DXMatrixTranslation(&mat, 0, 0, 5.0);
D3DXMatrixTranslation(&mat, 0.2f, -1.0f, 7.0f);

g_pDevice->SetTransform(D3DTS_VIEW, &(D3DMATRIX)mat);

// Setup the vertex buffer
g_pDevice->CreateVertexBuffer(sizeof(CVertex)*4, NULL, D3DFVF_CVertex, D3DPOOL_MANAGED, &g_pVertexBuffer);

CVertex *vtxQuad;
g_pVertexBuffer->Lock(0, 0, (BYTE **)&vtxQuad, NULL);
/*
vtxQuad[0].Create(0, 0, 0, 1, 0, 0, 0, 1);
vtxQuad[1].Create(0, 1, 0, 0, 1, 0, 0, 0);
vtxQuad[2].Create(1.25, 0, 0, 0, 0, 1, 1, 1);
vtxQuad[3].Create(1.25, 1, 0, 1, 1, 1, 1, 0); */


vtxQuad[0].Create(0, 0, 0, 1, 0, 0, 0, 1);
vtxQuad[1].Create(0, 1, 0, 0, 1, 0, 0, 0);
vtxQuad[2].Create(1.0, 0, 0, 0, 0, 1, 1, 1);
vtxQuad[3].Create(1.0, 1, 0, 1, 1, 1, 1, 0);


g_pVertexBuffer->Unlock();


Chris
:rolleyes:
 
Sofern du auf der version 8 von DirectX beharrst wird es schwer ne andere möglichkeit zu finden...

Wenn du dich allerdings mit DirectX 7 zufriedengeben würdest so könntest du DirectDraw benutzen, was dir die arbeit wesendlich erleichten würde...
 
Zurück