hallo ich bin mal wieder :roll:
Ich bin mit dem Buch leider noch nicht so weit, wollte aber trotzde mal in einem kleinen Programm (bzw. ich hab Davids programm abgeändert
) testen ob ich alles verstanden hab. SO, und jetzt wollte ich nur mal so als test ein Viereck (2Dreiecke) mit einer anderen Textur überziehen wie der hintergrund. Also habe ich einfach mehr oder weniger genau das selbe geschrieben wie der Code der Die 1. Textur läd. Aber enn ich das Programm ausführe, zeigt er mir nur 1ne Textur an, ich denke das hat irgendwas mit der g_pD3DDevice->SetTexture Funktion zu tun , aber ich weiß nich so ganz wie ich es hinbekomme :oops: :oops:
also hier mal 1. Textur 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
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
71
72
73
74
75
76
77
78
|
for(int a = 0; a < 10; a++)
{
// Position
g_aTriangle[a].aVertex[0].x = -12.0f;
g_aTriangle[a].aVertex[0].y = 9.0f - 2 * a;
g_aTriangle[a].aVertex[0].z = 1.0f;
g_aTriangle[a].aVertex[1].x = -12.0f;
g_aTriangle[a].aVertex[1].y = 7.0f - 2 * a;
g_aTriangle[a].aVertex[1].z = 1.0f;
g_aTriangle[a].aVertex[2].x = -10.0f;
g_aTriangle[a].aVertex[2].y = 9.0f - 2 * a;
g_aTriangle[a].aVertex[2].z = 1.0f;
g_aTriangle[a].aVertex[3].x = -10.0f;
g_aTriangle[a].aVertex[3].y = 7.0f - 2 * a;
g_aTriangle[a].aVertex[3].z = 1.0f;
for(int i = 4; i < 26 ; i++)
{
g_aTriangle[a].aVertex[i].x = g_aTriangle[a].aVertex[i-2].x +2.0f;
g_aTriangle[a].aVertex[i].y = g_aTriangle[a].aVertex[i-2].y;
g_aTriangle[a].aVertex[i].z = 1.0f;
}
for(int iVertex = 0; iVertex < 26; iVertex++)
{
// Farbe
VertexColor.r = 1.0f;
VertexColor.g = 1.0f;
VertexColor.b = 1.0f;
g_aTriangle[a].aVertex[iVertex].dwColor = (DWORD)(VertexColor);
}
// Texturkoordinaten
g_aTriangle[a].aVertex[0].vTexture.u = 0.0f;
g_aTriangle[a].aVertex[0].vTexture.v = 0.0f;
g_aTriangle[a].aVertex[1].vTexture.u = 0.0f ;
g_aTriangle[a].aVertex[1].vTexture.v = 1.0f;
for(i = 2; i < 26; i++)
{
g_aTriangle[a].aVertex[i].vTexture.u = g_aTriangle[a].aVertex[i-2].vTexture.u +1.0f;
g_aTriangle[a].aVertex[i].vTexture.v = g_aTriangle[a].aVertex[i-2].vTexture.v;
}
}
// Die Textur laden
if(FAILED(hResult = D3DXCreateTextureFromFileEx(g_pD3DDevice, // Device
"Texture.bmp", // Dateiname
D3DX_DEFAULT, // Breite
D3DX_DEFAULT, // Höhe
D3DX_DEFAULT, // MIP-Maps
0, // Verwendungszweck
D3DFMT_UNKNOWN, // Format
D3DPOOL_MANAGED, // Speicherklasse
D3DX_FILTER_NONE, // Filter
D3DX_DEFAULT, // MIP-Map-Filter
0, // Color-Key
NULL, // Unwichtig
NULL, // Unwichtig
&g_pTexture))) // Die Textur
{
// Fehler!
TB_ERROR_DIRECTX("D3DXCreateTextureFromFileEx", hResult, TB_ERROR);
}
// Und nun die Textur einsetzen
g_pD3DDevice->SetTexture(0, g_pTexture);
|
und die 2. (wundert euch nicht, wenn es etwas chaotisch ist, ich habe nämlich schon etwas rumexperimenteiert.
|
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
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
71
|
g_aPanzer1.bVertex[0].x = -6.0f;
g_aPanzer1.bVertex[0].y = -6.0f;
g_aPanzer1.bVertex[0].z = 0.90f;
g_aPanzer1.bVertex[1].x = -6.0f;
g_aPanzer1.bVertex[1].y = -5.0f;
g_aPanzer1.bVertex[1].z = 0.9f;
g_aPanzer1.bVertex[2].x = -5.0f;
g_aPanzer1.bVertex[2].y = -6.0f;
g_aPanzer1.bVertex[2].z = 0.9f;
g_aPanzer1.bVertex[3].x = -5.0f;
g_aPanzer1.bVertex[3].y = -5.0f;
g_aPanzer1.bVertex[3].z = 0.9f;
/////////////////////////////Farbe//////////////////////////////////////////////
VertexColor.r = 1.0f;
VertexColor.g = 1.0f;
VertexColor.b = 1.0f;
g_aPanzer1.bVertex[0].dwColor = (DWORD)(VertexColor);
VertexColor.r = 1.0f;
VertexColor.g = 1.0f;
VertexColor.b = 1.0f;
g_aPanzer1.bVertex[1].dwColor = (DWORD)(VertexColor);
VertexColor.r = 1.0f;
VertexColor.g = 1.0f;
VertexColor.b = 1.0f;
g_aPanzer1.bVertex[2].dwColor = (DWORD)(VertexColor);
VertexColor.r = 1.0f;
VertexColor.g = 1.0f;
VertexColor.b = 1.0f;
g_aPanzer1.bVertex[3].dwColor = (DWORD)(VertexColor);
///////////////////////////////TexturKoordinaten//////////////////////////////////////////
g_aPanzer1.bVertex[0].vTexture.u = 0.0f;
g_aPanzer1.bVertex[0].vTexture.v = 0.0f;
g_aPanzer1.bVertex[1].vTexture.u = 0.0f;
g_aPanzer1.bVertex[1].vTexture.v = 1.0f;
g_aPanzer1.bVertex[2].vTexture.u = 1.0f;
g_aPanzer1.bVertex[2].vTexture.v = 0.0f;
g_aPanzer1.bVertex[3].vTexture.u = 1.0f;
g_aPanzer1.bVertex[3].vTexture.v = 1.0f;
if(FAILED(hResult = D3DXCreateTextureFromFileEx(g_pD3DDevice, // Device
"Panzer.bmp", // Dateiname
D3DX_DEFAULT, // Breite
D3DX_DEFAULT, // Höhe
D3DX_DEFAULT, // MIP-Maps
0, // Verwendungszweck
D3DFMT_UNKNOWN, // Format
D3DPOOL_MANAGED, // Speicherklasse
D3DX_FILTER_NONE, // Filter
D3DX_DEFAULT, // MIP-Map-Filter
0, // Color-Key
NULL, // Unwichtig
NULL, // Unwichtig
&g_pTexture2))) // Die Textur
{
// Fehler!
TB_ERROR_DIRECTX("D3DXCreateTextureFromFileEx", hResult, TB_ERROR);
}
// Und nun die Textur einsetzen
g_pD3DDevice->SetTexture(0, g_pTexture2);
|
Ja das ist eine Panzer texture :roll: die istnämlich scon quadratisch :lol: :lol: beide werden auch selbstständig gezeichnet :
|
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
|
if(FAILED(hResult = g_pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, // Dreiecksliste
24, // 13 Vierecke
g_aTriangle[a].aVertex, // Vertexdaten
sizeof(SVertex)))) // Vertexgröße
{
// Fehler beim Zeichnen!
MessageBox(g_hWindow, "Fehler beim Zeichnen des Dreiecks!",
"Fehler", MB_OK | MB_ICONEXCLAMATION);
TB_ERROR_DIRECTX("g_pD3DDevice->DrawPrimitiveUP", hResult, TB_STOP);
}
}
///////////////////////Panzer//////////////////////////////
if(FAILED(hResult = g_pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, // Dreiecksliste
2, // 1 Viereck
g_aPanzer1.bVertex, // Vertexdaten
sizeof(SVertex)))) // Vertexgröße
{
// Fehler beim Zeichnen!
MessageBox(g_hWindow, "Fehler beim Zeichnen des Dreiecks!",
"Fehler", MB_OK | MB_ICONEXCLAMATION);
TB_ERROR_DIRECTX("g_pD3DDevice->DrawPrimitiveUP", hResult, TB_STOP);
}
|
Ich weiß leider nicht an was es liegt. Danke für eure Hilfe und wenn ihr den ganzen Quellcode haben wollt müsst ihrs nur sagen (obwohl ihr davon vllt. erschlagen werden könntet bzw. nixda ewürde en dreifachen Herzinfakt bekommen xD )
Also meine Frage: wie schaffe ich es mehrere Texturen auf verschiedene Dreiecke (kann man schon Polygone sagen?) zulegen?
mfg