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
Anonymous
unregistriert
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 |
// Einer Textur einen Alphakey geben void setAlphakey (::IDirect3DTexture9** texture, unsigned long colorkey, unsigned long alpha) { // Hilfsobjekte static ::D3DSURFACE_DESC describe; static ::D3DLOCKED_RECT rect; // Surfacebeschreibung holen (*texture)->GetLevelDesc (0, &describe); // Textur verriegeln (*texture)->LockRect (0, &rect, NULL, 0); // 32 Bit Pointer auf Bilddaten in der Textur for (unsigned long y=0; y<static_cast<unsigned long>(describe.Height); ++y) { for (unsigned long x=0; x<static_cast<unsigned long>(describe.Width); ++x) { if ((static_cast<unsigned long*>(rect.pBits))[describe.Width*y+x] == colorkey) (static_cast<unsigned long*>(rect.pBits))[describe.Width*y+x] = alpha; } } // Textur entriegeln (*texture)->UnlockRect (0); } |
Zitat
...nicht mehr Colorkey (Handelt sich ja nicht mehr um eine Surface) ...
Zitat
static :3DSURFACE_DESC describe;
Anonymous
unregistriert
Zitat von »"Nox"«
@nix da: Eigentor!
Zitat
...nicht mehr Colorkey (Handelt sich ja nicht mehr um eine Surface) ...
Zitat
static :3DSURFACE_DESC describe;
Wenn wir schon am Haarespalten sind, dann aber richtig
Anonymous
unregistriert
Zitat
This method returns a surface description for the level specified by this parameter.
Anonymous
unregistriert
Zitat von »"nix da"«
Um den Alphakey darzustellen benötigt man wie immer eines: Alphablending muß aktiv sein.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
m_pDirect3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE); m_pDirect3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA); m_pDirect3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA); m_pDirect3DDevice->SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); m_pDirect3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); m_pDirect3DDevice->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE); m_pDirect3DDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE); m_pDirect3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE); m_pDirect3DDevice->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE); |
Werbeanzeige