Es handelt sich um diesen Code:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
tbDirect3D::SetTexture(0, m_pHeliTex);
tbDirect3D::SetRS(D3DRS_ZENABLE, FALSE);
tbDirect3D::SetRS(D3DRS_ZWRITEENABLE, FALSE);
tbDirect3D::SetRS(D3DRS_COLORVERTEX, TRUE);
tbDirect3D::SetRS(D3DRS_ALPHABLENDENABLE, TRUE);
tbDirect3D::SetRS(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
tbDirect3D::SetRS(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
tbDirect3D::SetTSS(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
tbDirect3D::SetTSS(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
tbDirect3D::SetTSS(0, D3DTSS_ALPHAARG2, D3DTA_CURRENT);
tbDirect3D::SetTSS(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
tbDirect3D::SetTSS(0, D3DTSS_COLORARG1, D3DTA_CURRENT);
tbDirect3D::SetTSS(0, D3DTSS_COLORARG2, D3DTA_TEXTURE);
for(int iHeli = 1; iHeli > -1; iHeli--)
m_apHeli[iHeli]->Render(fTime);
tbDirect3D::SetRS(D3DRS_ALPHABLENDENABLE, FALSE);
|
Ich habe die Textur mit
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
|
m_pHeliTex = tbTextureManager::GetTexture("Data\\Helicopters.bmp",
TRUE,
D3DX_DEFAULT,
D3DX_DEFAULT,
D3DX_DEFAULT,
D3DFMT_UNKNOWN,
0,
D3DPOOL_MANAGED,
D3DX_DEFAULT,
D3DX_DEFAULT,
tbColor(1.0f, 0.0f, 1.0f, 1.0f));
|
geladen, und das Pink wird auch durch schwarz ersetzt. Die Color-Key Farbe muss also stimmen. Also muss es an den RenderStates liegen, oder?
Ich hab schon einiges rumprobiert, und der hat mir auch was (halb-)transparent gezeichnet, aber immer alles andere, als die ersetzte ColorKey Farbe (also den schwarzen Rand).
Was hab ich denn da falsch gesetzt?
Und: Ich hab am ende den ALPHABLENDENABLE-Status wieder auf FALSE gesetzt, weil ich das irgendwo bei David gesehn hab - aber warum macht man das eigentlich?
Klaus
PS: Die Schleife zählt nur rückwärts (1 --> >-1, anstatt 0 --> <2), weil ich da zum Testen mal die Zeichenreihenfolge umgekehrt hab. Das ändert aber nichts