Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Zitat
Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
HRESULT hResult; SVertex aVertex[4]; // Den Bildpuffer leeren if(FAILED(hResult = g_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 63), 1.0f, 0))) { // Fehler beim Leeren! TB_ERROR_DIRECTX("g_pD3DDevice->Clear", hResult, TB_STOP); } // Szene beginnen g_pD3DDevice->BeginScene(); // Das Viereck erstellen, auf dem die Animation abgespielt wird. // Die w-Texturkoordinate bestimmt dabei, wie weit die Animation fortgeschritten ist. // Zwischen 0 und 1 wird sie genau einmal abgespielt, hinter 1 wiederholt sie sich. aVertex[0].vPosition = tbVector3(-1.0f, -1.0f, 1.0f); aVertex[1].vPosition = tbVector3(-1.0f, 1.0f, 1.0f); aVertex[2].vPosition = tbVector3( 1.0f, -1.0f, 1.0f); aVertex[3].vPosition = tbVector3( 1.0f, 1.0f, 1.0f); aVertex[0].vTexture = tbVector3(0.0f, 1.0f, g_fTime * 0.1f); aVertex[1].vTexture = tbVector3(0.0f, 0.0f, g_fTime * 0.1f); aVertex[2].vTexture = tbVector3(1.0f, 1.0f, g_fTime * 0.1f); aVertex[3].vTexture = tbVector3(1.0f, 0.0f, g_fTime * 0.1f); // Nun das Viereck als Dreiecksfolge zeichnen (so brauchen wir nur 4 Vertizes) if(FAILED(hResult = g_pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, aVertex, sizeof(SVertex)))) { // Fehler beim Zeichnen! TB_ERROR_DIRECTX("g_pD3DDevice->DrawPrimitiveUP", hResult, TB_ERROR); } // Szene beenden g_pD3DDevice->EndScene(); // Der große Moment: den Bildpuffer sichtbar machen g_pD3DDevice->Present(NULL, NULL, NULL, NULL); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
HRESULT hResult; tbMatrix mProjection; float fAspect; // Vertexformat setzen - Positions-, Farb- und Texturkoordinatenangabe if(FAILED(hResult = g_pD3DDevice->SetFVF(SVertex::dwFVF))) { // Fehler beim Setzen des Vertexformats! TB_ERROR_DIRECTX("g_pD3DDevice->SetFVF", hResult, TB_ERROR); } // Beleuchtung und Z-Buffering ausschalten, Dithering aktivieren g_pD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE); g_pD3DDevice->SetRenderState(D3DRS_ZENABLE, FALSE); g_pD3DDevice->SetRenderState(D3DRS_DITHERENABLE, TRUE); // Alpha-Blending einschalten, so dass die Quellfarbe zur Transparenzberechnung // verwendet wird. g_pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); g_pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR); g_pD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR); // Bilineare Texturfilter g_pD3DDevice->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR); g_pD3DDevice->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR); // Das Bildseitenverhältnis berechnen fAspect = (float)(g_Direct3DParameters.VideoMode.Width) / (float)(g_Direct3DParameters.VideoMode.Height); // Die Projektionsmatrix erzeugen mProjection = tbMatrixProjection(TB_DEG_TO_RAD(90.0f), // Sichtfeld: 90° fAspect, // Bildseitenverhältnis 0.1f, // Nahe Clipping-Ebene 100.0f); // Ferne Clipping-Ebene // Projektionsmatrix einsetzen g_pD3DDevice->SetTransform(D3DTS_PROJECTION, (D3DMATRIX*)(&mProjection)); // Die Textur ohne MIP-Maps laden if(FAILED(hResult = D3DXCreateVolumeTextureFromFileEx(g_pD3DDevice, // Device "Explosion.dds", // Dateiname D3DX_DEFAULT, // Breite D3DX_DEFAULT, // Tiefe D3DX_DEFAULT, // Höhe 1, // MIP-Maps 0, // Verwendungszweck D3DFMT_UNKNOWN, // Format D3DPOOL_MANAGED, // Speicherklasse D3DX_FILTER_NONE, // Filter D3DX_DEFAULT, // MIP-Map-Filter 0, // Color-Key NULL, // Unwichtig NULL, // Unwichtig &g_pTexture))) // Die Textur { // Fehler! Wahrscheinlich werden keine Volumentexturen unterstützt. MessageBox(g_hWindow, "Die Volumentextur konnte nicht erstellt werden!\nWahrscheinlich werden Volumentexturen von Ihrer Hardware nicht unterstützt.\nSchalten Sie auf den Referenz-Rasterizer um!", "Fehler", MB_OK | MB_ICONEXCLAMATION); TB_ERROR_DIRECTX("D3DXCreateVolumeTextureFromFileEx", hResult, TB_ERROR); } // Und nun die Textur einsetzen g_pD3DDevice->SetTexture(0, g_pTexture); |
Zitat
Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.
Pix: Alles S_OK
Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von »dot« (19.02.2012, 00:18)
Zitat
Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.
Zitat
Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.
Administrator
Werbeanzeige