Hiho Community,
ich bin grad dabei ein Menü mit transparenten Buttons in 3D zu basteln. Für die Buttons hab ich transparente Texturen erstellt die ich lade und zeichne, sie sind nur leider nicht transparent.
Der Code hierfür sieht in etwa so aus:
Das Laden:
|
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
|
#define D3DFVF_CUSTOMVERTEX_TEXTURE (D3DFVF_XYZ | D3DFVF_TEX1)
struct CUSTOMVERTEX_TEXTURE
{
D3DXVECTOR3 Position;
float tu, tv;
};
Direct3D->Device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
Direct3D->Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
Direct3D->Device->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
HRESULT hr = D3DXCreateTextureFromFileEx(Direct3D->Device, "MyMedia/Menu/button_newgame.png", D3DX_DEFAULT, D3DX_DEFAULT, 1, NULL, D3DFMT_UNKNOWN, D3DPOOL_MANAGED, D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER,
D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER, 0, NULL, NULL, &Texture_NewGame);
Vertices_NewGame[0].Position = D3DXVECTOR3(-1.0f, 0.5f, -2.0f);
Vertices_NewGame[0].tu = 0.0f;
Vertices_NewGame[0].tv = 0.0f;
Vertices_NewGame[1].Position = D3DXVECTOR3(1.0f, -0.5f, -2.0f);
Vertices_NewGame[1].tu = 1.0f;
Vertices_NewGame[1].tv = 1.0f;
Vertices_NewGame[2].Position = D3DXVECTOR3(-1.0f, -0.5, -2.0f);
Vertices_NewGame[2].tu = 0.0f;
Vertices_NewGame[2].tv = 1.0f;
|
Das zeichnen:
|
C-/C++-Quelltext
|
1
2
3
4
5
|
Direct3D->Device->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
Direct3D->Device->SetFVF(D3DFVF_CUSTOMVERTEX_TEXTURE);
Direct3D->Device->SetTexture(0, Texture_BackGround);
Direct3D->Device->DrawPrimitiveUP(D3DPT_TRIANGLELIST, 2, &Vertices_BackGround, sizeof(CUSTOMVERTEX_TEXTURE));
Direct3D->Device->SetRenderState(D3DRS_ALPHABLENDENABLE, false);
|
Laden und zeichnen klappt ohne Fehler, es is halt leider nich durchsichtig.
Kann mir jemand helfen und sagen was ich falsch mache/anders machen sollte?
Ich würde mich sehr über Hilfe freuen
MfG Killmichnich