hey leute!!!!
ich brauch eure hilfe!!!
also ich bin erst neu in der programmierung mit directX. So habe ich im internetbeispiele gefunden und diese dann richtig abgetippt oder die quellcodes geladen.
ABER als ich die beispiele unter mircosoft VC 2005 express kompilieren wollte kommmen soooooo unendlich viele fehler!!!
ich hab schon daraus gelesen das der fehler nicht in dem eigentlichen quellcode liegt, sondern in den headern von direct X!!!
z.b. winnt.h oder so.....
ich hab schon verschiedene directx sdk´s installiert und nix hat sich geändert!!!!
bitte helft mir!!! ich weis echt nicht weiter!!!!
ich habs jez mit nem beispiel von ner buch cd probiert...
es ändert sich nix!!!
wie kann das angehen...???'
'
SO hier is der code... wie gesagt ich hab daran nix verändert!!!
es sind die quellcodes und die .exe vorhanden... die .exe funktionieren!!!
so hier is der code aus der cpp datei:
|
Quellcode
|
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
79
80
81
|
# include "Trianglefan.h"
trianglefan::trianglefan()
{
dreieckbuffer = 0;
linienbuffer = 0;
}
trianglefan::~trianglefan()
{
if( dreieckbuffer)
dreieckbuffer->Release();
if( linienbuffer)
linienbuffer->Release();
}
void trianglefan::create( LPDIRECT3DDEVICE9 dev)
{
device = dev;
device->CreateVertexBuffer( 6*sizeof(meinvertex), 0, MEINVERTEXFORMAT, D3DPOOL_MANAGED, &dreieckbuffer, NULL);
device->CreateVertexBuffer( 18*sizeof(meinvertex), 0, MEINVERTEXFORMAT, D3DPOOL_MANAGED, &linienbuffer, NULL);
}
void trianglefan::setup()
{
meinvertex *dv, *lv;
int i;
dreieckbuffer->Lock(0, 0, (void **)&dv, 0);
linienbuffer->Lock(0, 0, (void **)&lv, 0);
dv[0].pos = D3DXVECTOR3( 2, 1, 0);
dv[1].pos = D3DXVECTOR3( 0, 0, 0);
dv[2].pos = D3DXVECTOR3( 1, 2, 0);
dv[3].pos = D3DXVECTOR3( 2, 2, 0);
dv[4].pos = D3DXVECTOR3( 3, 2, 0);
dv[5].pos = D3DXVECTOR3( 4, 1, 0);
dv[0].color = D3DCOLOR_ARGB(255, 255, 0, 0);
dv[1].color = D3DCOLOR_ARGB(255, 0, 255, 0);
dv[2].color = D3DCOLOR_ARGB(255, 0, 0, 255);
dv[3].color = D3DCOLOR_ARGB(255, 255, 0, 0);
dv[4].color = D3DCOLOR_ARGB(255, 0, 255, 0);
dv[5].color = D3DCOLOR_ARGB(255, 0, 0, 255);
lv[0].pos = dv[0].pos;
lv[1].pos = dv[1].pos;
lv[2].pos = dv[0].pos;
lv[3].pos = dv[2].pos;
lv[4].pos = dv[0].pos;
lv[5].pos = dv[3].pos;
lv[6].pos = dv[0].pos;
lv[7].pos = dv[4].pos;
lv[8].pos = dv[0].pos;
lv[9].pos = dv[5].pos;
lv[10].pos = dv[1].pos;
lv[11].pos = dv[2].pos;
lv[12].pos = dv[2].pos;
lv[13].pos = dv[3].pos;
lv[14].pos = dv[3].pos;
lv[15].pos = dv[4].pos;
lv[16].pos = dv[4].pos;
lv[17].pos = dv[5].pos;
for( i = 0; i < 12; i++)
lv[i].color = D3DCOLOR_ARGB(255, 0, 0, 0);
dreieckbuffer->Unlock();
linienbuffer->Unlock();
}
void trianglefan::render()
{
device->SetRenderState( D3DRS_AMBIENT, 0xffffff);
device->SetRenderState( D3DRS_AMBIENTMATERIALSOURCE, D3DMCS_COLOR1);
device->SetFVF( MEINVERTEXFORMAT);
device->SetStreamSource( 0, dreieckbuffer, 0, sizeof(meinvertex));
device->DrawPrimitive( D3DPT_TRIANGLEFAN, 0, 4);
device->SetStreamSource( 0, linienbuffer, 0, sizeof(meinvertex));
device->DrawPrimitive( D3DPT_LINELIST, 0, 9);
}
|
so dann kommt jez die headerdatei:
|
Quellcode
|
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
|
# ifndef TRIANGLEFAN_H
# define TRIANGLEFAN_H
# include <d3dx9.h>
# define MEINVERTEXFORMAT (D3DFVF_XYZ | D3DFVF_DIFFUSE)
struct meinvertex
{
D3DXVECTOR3 pos;
D3DCOLOR color;
};
class trianglefan
{
private:
LPDIRECT3DDEVICE9 device;
LPDIRECT3DVERTEXBUFFER9 dreieckbuffer;
LPDIRECT3DVERTEXBUFFER9 linienbuffer;
public:
trianglefan();
~trianglefan();
void create( LPDIRECT3DDEVICE9 dev);
void setup();
void render();
void lookatme( D3DXVECTOR3 &pos, D3DXVECTOR3 &look){ pos = D3DXVECTOR3(2, 1, -5); look = D3DXVECTOR3(0, 0, 1);}
};
|
# endif
so und als ob das nich genug is dann auch noch die fehler(nur ein auszug):
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winnt.h(3043) : warning C4103: "c:\programme\microsoft directx sdk (august 2006)\include\winnt.h": Ausrichtung wurde nach Einschließen des Headers geändert, möglicherweise fehlt "#pragma pack(pop)".
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winnt.h(3335) : warning C4103: "c:\programme\microsoft directx sdk (august 2006)\include\winnt.h": Ausrichtung wurde nach Einschließen des Headers geändert, möglicherweise fehlt "#pragma pack(pop)".
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winnt.h(3435) : warning C4068: Unbekanntes Pragma
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winnt.h(3440) : warning C4068: Unbekanntes Pragma
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winbase.h(1260) : error C2144: Syntaxfehler: 'void' sollte auf ';' folgen
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winbase.h(1260) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winbase.h(1261) : error C2144: Syntaxfehler: 'void' sollte auf ';' folgen
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winbase.h(1261) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winbase.h(1261) : error C2086: 'int DECLSPEC_NORETURN': Neudefinition
1> C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winbase.h(1260): Siehe Deklaration von 'DECLSPEC_NORETURN'
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winbase.h(1321) : error C2144: Syntaxfehler: 'void' sollte auf ';' folgen
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winbase.h(1321) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winbase.h(1321) : error C2086: 'int DECLSPEC_NORETURN': Neudefinition
1> C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winbase.h(1260): Siehe Deklaration von 'DECLSPEC_NORETURN'
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\rpcdce.h(366) : error C2144: Syntaxfehler: 'void' sollte auf ';' folgen
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\rpcdce.h(366) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\rpcdce.h(366) : error C2086: 'int DECLSPEC_NORETURN': Neudefinition
1> C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winbase.h(1260): Siehe Deklaration von 'DECLSPEC_NORETURN'
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\rpcdcep.h(89) : error C3646: "I_RpcAllocate": Unbekannter Überschreibungsspezifizierer
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\rpcdcep.h(89) : error C2091: Funktionsergebnis ist eine Funktion
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\rpcdcep.h(89) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\shellapi.h(129) : warning C4103: "c:\programme\microsoft directx sdk (august 2006)\include\shellapi.h": Ausrichtung wurde nach Einschließen des Headers geändert, möglicherweise fehlt "#pragma pack(pop)".
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\shellapi.h(265) : warning C4103: "c:\programme\microsoft directx sdk (august 2006)\include\shellapi.h": Ausrichtung wurde nach Einschließen des Headers geändert, möglicherweise fehlt "#pragma pack(pop)".
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winsock2.h(537) : error C3646: "inet_ntoa": Unbekannter Überschreibungsspezifizierer
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winsock2.h(537) : error C2091: Funktionsergebnis ist eine Funktion
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winsock2.h(537) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winsock2.h(537) : error C2733: Zweite C-Bindung für überladene Funktion 'DECLARE_STDCALL_P' nicht zulässig
1> C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winsock2.h(537): Siehe Deklaration von 'DECLARE_STDCALL_P'
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winsock2.h(546) : error C3646: "gethostbyaddr": Unbekannter Überschreibungsspezifizierer
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winsock2.h(546) : error C2091: Funktionsergebnis ist eine Funktion
1>C:\Programme\Microsoft DirectX SDK (August 2006)\Include\winsock2.h(546) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
egal was ich ausprobiere immer kommen diese fehler!!
ich hab auch schon ma ein prog von meinem kumpel versucht bei mir zum laufen zu kriegen - aber die gleichen fehler - aber bei ihm funktionieren sie!!!!
er kann mir aber nich helfen
BITTTTTTTEEEEEEEEEEEE HELFT MIR....... nix funktioniert!!