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
66
67
68
69
70
|
// Renderfunktion
tbResult RenderProc(float fNumSecsPassed)
{
SVertex aVertex[4];
// Puffer leeren und Szene beginnen
tbDirect3D& D3D = tbDirect3D::Instance();
D3D->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, tbColor(0.0f, 0.0f, 0.0f), 1.0f, 0);
D3D->BeginScene();
// Vertexformat und Textur setzen, Z-Buffer aus
D3D.SetFVF(SVertex::dwFVF);
D3D.SetTexture(0, g_pTexture);
D3D.SetRS(D3DRS_ZENABLE, D3DZB_FALSE);
// Pixel zeichnen
g_pDraw->BeginDraw(NULL, 0);
g_pDraw->DrawFilledRect(0, 0, D3D.GetScreenSize().x, D3D.GetScreenSize().y, g_pDraw->MakeRGB(0, 0, 200));
g_pDraw->DrawFilledCircle(D3D.GetScreenSize().x / 2, D3D.GetScreenSize().y / 2, D3D.GetScreenSize().y / 2, g_pDraw->MakeRGB(200, 0, 0));
g_pDraw->EndDraw();
// Die vier Vertizes des Bildes erstellen (Rechteck)
// Links unten
aVertex[0].vPosition = tbVector3(0.0f, D3D.GetScreenSize().y, 0.5f);
aVertex[0].fRHW = 1.0f;
aVertex[0].vTex0 = tbVector2(0.0f, 1.0f);
// Links oben
aVertex[1].vPosition = tbVector3(0.0f, 0.0f, 0.5f);
aVertex[1].fRHW = 1.0f;
aVertex[1].vTex0 = tbVector2(0.0f, 0.0f);
// Rechts unten
aVertex[2].vPosition = tbVector3(D3D.GetScreenSize().x, D3D.GetScreenSize().y, 0.5f);
aVertex[2].fRHW = 1.0f;
aVertex[2].vTex0 = tbVector2(1.0f, 1.0f);
// Rechts oben
aVertex[3].vPosition = tbVector3(D3D.GetScreenSize().x, 0.0f, 0.5f);
aVertex[3].fRHW = 1.0f;
aVertex[3].vTex0 = tbVector2(1.0f, 0.0f);
// Als Dreiecksfolge zeichnen
D3D->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, aVertex, sizeof(SVertex));
D3D->EndScene();
return TB_OK;
}
// InitScene
tbResult InitScene()
{
// Textur laden
g_pTexture = tbTextureManager::Instance().GetTexture("Data\\WhiteBackground.bmp", TRUE, D3DX_DEFAULT, D3DX_DEFAULT, 1);
if (!g_pTexture)
{
TB_ERROR("Fehler beim Laden des Hintergrundbildes", TB_ERROR);
return TB_ERROR;
}
// Zeichenklasse erstellen
g_pDraw = new tbDraw2D;
g_pDraw->Init(g_pTexture, 0);
return TB_OK;
}
|