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
|
bsResult cCam::RenderCrosshair()
{
SHUDVertex aVertex[4];
bsVec2 vMiddle; // Mitte des Bildschirms
// ------------------------------------------------------------------
// Textur setzen
bsDirect3D::SetTexture(0, m_pCross);
// Vertexformat und Render-States
bsDirect3D::SetFVF(HUD_FVF);
bsDirect3D::SetRS(D3DRS_ZENABLE, FALSE);
bsDirect3D::SetRS(D3DRS_ZWRITEENABLE, FALSE);
bsDirect3D::SetRS(D3DRS_COLORVERTEX, TRUE);
bsDirect3D::SetRS(D3DRS_ALPHABLENDENABLE, TRUE);
bsDirect3D::SetRS(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
bsDirect3D::SetRS(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
bsDirect3D::SetTSS(0, D3DTSS_COLOROP, D3DTOP_MODULATE);
bsDirect3D::SetTSS(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
bsDirect3D::SetTSS(0, D3DTSS_COLORARG2, D3DTA_CURRENT);
bsDirect3D::SetTSS(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);
bsDirect3D::SetTSS(0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
bsDirect3D::SetTSS(0, D3DTSS_ALPHAARG2, D3DTA_CURRENT);
vMiddle = bsVec2(bsDirect3D::GetScreenSize().x, bsDirect3D::GetScreenSize().y);
// Die vier Vertizes des Fadenkreuzes erstellen (Rechteck)
// Links unten
aVertex[0].vPosition = bsVec3(0, 32, 0.5f);
aVertex[0].fRHW = 1.0f;
aVertex[0].Color = bsColor(1.0f);
aVertex[0].vTex0 = bsVec2(0.0f, 1.0f);
// Links oben
aVertex[1].vPosition = bsVec3(0, 0, 0.5f);
aVertex[1].fRHW = 1.0f;
aVertex[1].Color = bsColor(1.0f);
aVertex[1].vTex0 = bsVec2(0.0f, 0.0f);
// Rechts unten
aVertex[2].vPosition = bsVec3(32, 32, 0.5f);
aVertex[2].fRHW = 1.0f;
aVertex[2].Color = bsColor(1.0f);
aVertex[2].vTex0 = bsVec2(1.0f, 1.0f);
// Rechts oben
aVertex[3].vPosition = bsVec3(32, 0, 0.5f);
aVertex[3].fRHW = 1.0f;
aVertex[3].Color = bsColor(1.0f);
aVertex[3].vTex0 = bsVec2(1.0f, 0.0f);
// Als Dreiecksfolge zeichnen
bsDirect3D::GetDevice()->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, aVertex, sizeof(SHUDVertex));
return BS_OK;
}
|