hi @ all,
ich hatte das bedürfniss nach 1/2 jahr oberflächenprogrammierung in java mal wieder was in 3d zu machen. also habe ich mir das buch von david wieder vorgenommen. die dreiecksstruktur wird mit daten gefüttert, DrawPrimitiveUP gibt s_ok zurück. ich vermute einfach die kamera funzt nicht richtig, bzw ich stehe auf dem dreieck.
hier der code:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
InitCamera(D3DXVECTOR3 camPosition, D3DXVECTOR3 camViewPoint)
{
D3DXMATRIX ViewMatrix;
D3DXMatrixLookAtLH(&ViewMatrix,
&camPosition,
&camViewPoint,
&D3DXVECTOR3(0.0f, 1.0f, 0.0f));
m_lpD3DDevice->SetTransform(D3DTS_VIEW, &ViewMatrix);
D3DXMATRIX ProjMatrix;
D3DXMatrixPerspectiveFovLH(&ProjMatrix,
D3DX_PI/4,
static_cast<float>(1024) /
static_cast<float>(768),
0.1f,
100.0f);
m_lpD3DDevice->SetTransform(D3DTS_PROJECTION, &ProjMatrix);
}
|
|
C-/C++-Quelltext
|
1
|
.InitCamera(D3DXVECTOR3(-10.0f, 0.0f, 0.0f), D3DXVECTOR3(1.0f, 0.0f, 0.0f));
|
|
C-/C++-Quelltext
|
1
2
3
4
|
.m_lpD3DDevice->DrawPrimitiveUP( D3DPT_TRIANGLELIST,
1,
&TriangleVertex,
sizeof(SVertex))));
|
|
C-/C++-Quelltext
|
1
2
3
4
5
6
|
TriangleVertex[0].vPosition = D3DXVECTOR3( 0.0f, 1.0f, 0.0f);
TriangleVertex[1].vPosition = D3DXVECTOR3( 1.0f, -1.0f, 0.0f);
TriangleVertex[2].vPosition = D3DXVECTOR3(-1.0f, -1.0f, 0.0f);
TriangleVertex[0].dwColor = D3DCOLOR_XRGB(255, 0, 0);
TriangleVertex[1].dwColor = D3DCOLOR_XRGB(0, 255, 0);
TriangleVertex[2].dwColor = D3DCOLOR_XRGB(0, 0, 255);
|
|
C-/C++-Quelltext
|
1
2
3
4
|
m_lpD3DDevice->SetFVF(D3DFVF_XYZ | D3DFVF_DIFFUSE)
m_lpD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
m_lpD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);
m_lpD3DDevice->SetRenderState(D3DRS_DITHERENABLE,true);
|
das sind der entsprechenden quellcodeausschnitte wo ich den fehler vermute. ich denke mal das es was mit der clippingebene zu tun hat, da ich ein ähnliches problem schonmal hatte.
fehler werden natürlich abgefangen, aber aus übersichtlichkeitsgründen habe ich die prüfungen herausgenommen