Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

14.07.2010, 21:22

Problem mit (2.7) Vertex- und Index-Buffer (gelöst)

Hey,

Nochmal vorab ich habe vor na ganzen weile mal angefangen (hatte jetzt sehr lange keine Zeit weiter daran zu arbeiten) das Buch 3D Spieleprogrammierung mit DirectX 9 und c++ durch zu arbeiten indem ich die Engine quasi nachprogrammiere. ( mit Dev c++ -> Ich möchte nichts hören ! ) So bleibt das was ich mir da aneigne länger hängen. ^^ (deshalb auch etwas sehr viele Kommentare)

So zu meinem Problem. Ich habe ein Quadrat in einem Vertexbuffer erstellt.
Doch irgendwie habe ich irgendeine Kleinigkeit falsch gemacht. ^^ Jedenfalls wird das Quadrat nicht angezegt :/ ...
Ich suche jetzt schon ne halbe Ewigkeit und deshalb dachte ich mir, vielleicht ist hier ja jemand besser im Fehler Finden als ich ;].

(bei Google steht im übrigen auch nichts ;) nur so nebenbei)

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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
// Datei: mein.cpp

// general includes
#include <windows.h>
#include <string>
#include <d3dx9.h>
//#include <MMSystem.h>

// TDX includes
#include "TDX_E/TDX_Direct3D9.h"
#include "TDX_E/TDX_Log.h"
#include "TDX_E/TDX_Color.h"

//Globals
HWND hwnd;
TDX_Direct3D9* g_TDX;
HRESULT hResult;

PDIRECT3DTEXTURE9 Texture1;
PDIRECT3DVERTEXBUFFER9 VertexBuffer;

/* ========================================================================== */
/* ============================( Vertex-Struktur )=========================== */
/* ========================================================================== */

struct SVertex
{
    TDX_Vector3             vPosition;
    DWORD                   dwColor;
    TDX_Vector2             vTexture;
    
    static const DWORD      VertexFormat;
};

const DWORD SVertex::VertexFormat = D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX1;

/* ========================================================================== */
/* ==============================( Init-Scene )============================== */
/* ========================================================================== */

void InitScene()
{   
    /* ===== Vertex Format setzen ===== */
    if(FAILED(hResult = g_TDX->GetDevice()->SetFVF( SVertex::VertexFormat )))
    {
        WriteToLog("SetFVF() Failed!");
        MessageBox(NULL,"SetFVF() Failed!","ERROR",MB_OK);
    }
    
    /* ===== Renderstats ===== */
    // -> Beleuchtung
        g_TDX->GetDevice()->SetRenderState(D3DRS_LIGHTING, false);              // Lichtberechnung ja oder nein
    // -> Füllmodus
        g_TDX->GetDevice()->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);      // Komplette Objekte zeichnen
        //g_TDX->GetDevice()->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME); // Kanten(Linien) zeichnen
        //g_TDX->GetDevice()->SetRenderState(D3DRS_FILLMODE, D3DFILL_POINT);    // Eckpunkte zeichnen
    // -> Schattierung
        g_TDX->GetDevice()->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD);   // interpoliert die Farben der Vertizes
        //g_TDX->GetDevice()->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_FLAT);   // überträgt die Farbe des ersten Vertex auf die anderen
    // -> Culling
        //g_TDX->GetDevice()->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW);      // schluckt alle Dreiecke die gegen den Uhrzeigersinn verlaufen
        //g_TDX->GetDevice()->SetRenderState(D3DRS_CULLMODE, D3DCULL_CW);       // schluckt alle Dreiecke die im Uhrzeigersinn verlaufen
        g_TDX->GetDevice()->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);       // alle Dreiecke werden gezeichnet
    // -> ZBuffer
        g_TDX->GetDevice()->SetRenderState(D3DRS_ZENABLE, true);                // Tiefenkontrolle An/Aus
        //g_TDX->GetDevice()->SetRenderState(D3DRS_ZENABLE, D3DZB_USEW);        // Tiefenkontrolle durch W-Buffere
    
        g_TDX->GetDevice()->SetRenderState(D3DRS_ZFUNC, D3DCMP_LESS);           // Vergleichskriterium -> D3DCMP_LESS / LESSEQUAL / EQUAL / NOTEQUAL / GREATER / GREATEREQUAL / ALWAYS / NEVER
    
        g_TDX->GetDevice()->SetRenderState(D3DRS_ZWRITEENABLE, true);           // Z-Buffer darf überschrieben werden? ja oder nein
    // -> Dithering
        g_TDX->GetDevice()->SetRenderState(D3DRS_DITHERENABLE, true);           // Farbgenauigkeit verbessern ? ja oder nein
    
    /* ===== Samplerstats ===== */
    // -> texture magnification
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);    // übernimmt die Farbe des nächstgelegenen Pixels
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);       // interpoliert die Farbe der 4 nächst gelegenen Pixel
        
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_MAXANISOTROPY, g_TDX->Para.DeviceCaps.MaxAnisotropy);
        g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_MAGFILTER, D3DTEXF_ANISOTROPIC); // interpoliert mehr Pixel um den wascheffekt bei schiefen Objekten zu korregieren
        // verfügbarkeit ->  g_TDX->Para.DeviceCaps.D3DPTFILTERCAPS_MAGFANISOTROPIC
        
    // -> texture minification
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_POINT);    // übernimmt die Farbe des nächstgelegenen Pixels
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);       // interpoliert die Farbe der 4 nächst gelegenen Pixel
        g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_MAXANISOTROPY, g_TDX->Para.DeviceCaps.MaxAnisotropy);
        g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_MINFILTER, D3DTEXF_ANISOTROPIC); // interpoliert mehr Pixel um den wascheffekt bei schiefen Objekten zu korregieren
        // verfügbarkeit ->  g_TDX->Para.DeviceCaps.D3DPTFILTERCAPS_MINFANISOTROPIC
        
        
    // -> MIP-Mapping
        g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_NONE);       // kein MIP-Mapping -> MAGFILTER
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_POINT);    // übernimmt die Farbe des nächstgelegenen Pixels
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_MIPFILTER, D3DTEXF_LINEAR);       // interpoliert die Farben der nächstgelegenen Pixel 
    
    // -> Textur-Kachelung
        g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_WRAP );       // normale Kachelung
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_MIRROR );   // gespiegelte Kachelung
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP );    // U > 1 -> U = 0   &  U < 0 -> U = 0
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_BORDER );   // verwendet die für D3DSAMP_BORDERCOLOR gesetzte Randfarbe
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_ADDRESSU, D3DTADDRESS_MIRRORONCE );  // Clamp nur mit Betragswerten
        
        g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_WRAP );
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_MIRROR );
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP );
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_BORDER );
        //g_TDX->GetDevice()->SetSamplerState( 0, D3DSAMP_ADDRESSV, D3DTADDRESS_MIRRORONCE );

    /* ===== Texturen Laden ===== */
    D3DXCreateTextureFromFileEx( g_TDX->GetDevice(),
                                "TestTexture.jpg",
                                354, // Breite
                                420, // Hoehe
                                D3DX_DEFAULT, //Zahl der MIP_Maps
                                0, // Verwendungszweck (D3DUSAGE_RENDERTARGET -> textur auf der man rendern kann)
                                    //                  (D3DUSAGE_DYNAMIC -> dynmische Textur , schneller , verfügbarkeit -> g_TDX->Para.DeviceCaps.Caps2.D3DCAPS2_DYNAMICTEXTURES
                                D3DFMT_UNKNOWN,     // Format
                                D3DPOOL_MANAGED, // Speicherklasse (D3DPOOL_DEFAULT -> am besten geeigneter Speicherbereich, keine Ressourcenverwaltung, nicht sperrbar (ausnahme dynamische Texturen) , man muss sich selber um verlohrene Ress. kümmern)
                                                //              (D3DPOOL_MANAGED -> kopie der Ress. im Systemspeicher, Ressourcenverwaltung, sperrbar, verlohrene Ress. für einen selber egal)
                                                //              (D3DPOOL_SYSTEMMEM ->  Systemspeicher, nur als Zwischenlager gedacht (Graka hat keinen zugriff))
                                                //              (D3DPOOL_SCRATCH -> = D3DPOOL_SYSTEMMEM (nur dass das Format nicht unterstützt werden muss)
                                D3DX_DEFAULT,   // Filter für das Laden der Textur (siehe S.159) -> 
                                        //                          (D3DX_FILTER_NONE  -> kein Filter)
                                        //                          (D3DX_FILTER_POINT -> am besten passender Texel, schlechte Qualität)
                                        //                          (D3DX_FILTER_LINEAR -> interpolation)
                                        //                          (D3DX_FILTER_TRIANGLE -> gleicher Einfluss durch jeden Texel)
                                        //                          (D3DX_FILTER_BOX -> Farbdurchschnitt (nur bei MIP-Map)
                                        //
                                        //                          (D3DX_FILTER_MIRROR_U -> Spiegelung an der U-Achse)
                                        //                          (D3DX_FILTER_MIRROR_V -> Spiegelung an der V-Achse)
                                        //                          (D3DX_FILTER_MIRROR_W -> Spiegelung an der W-Achse (nut bei 3D-Texturen))
                                        //                          (D3DX_FILTER_MIRROR -> Spiegelung an allen Achsen)
                                        //                          (D3DX_FILTER_Dither -> Dithering nach dem Filtern)
                                D3DX_DEFAULT, // Filter für das generieren der MIP-Maps
                                0,   // ColorKey
                                NULL,// Struktur zum abfragen der Bildinfos (D3DXIMAGE_INFO*)
                                NULL,// Paletten info (8-Bit)                       
                                &Texture1 ); //Texturschnittstelle
    if( FAILED( hResult =  g_TDX->GetDevice()->SetTexture( 0, Texture1 ) ) )
    {
        WriteToLog("SetTexture() Failed!");
        MessageBox(NULL,"SetTexture() Failed!","ERROR",MB_OK);
        g_TDX->Exit();
        return;
    } 
    
    /* ===== VertexBuffer =====*/
    g_TDX->GetDevice()->CreateVertexBuffer(4*sizeof(SVertex),0,SVertex::VertexFormat,D3DPOOL_MANAGED,&VertexBuffer,NULL); // p.168
    
    SVertex* pVertices;
    
    VertexBuffer->Lock(0,0,(void**)pVertices,D3DLOCK_NOSYSLOCK); // p.170
    
    pVertices[0].vPosition = TDX_Vector3(-1.0f,1.0f,0.0f);
    pVertices[1].vPosition = TDX_Vector3(1.0f,1.0f,0.0f);
    pVertices[2].vPosition = TDX_Vector3(-1.0f,-1.0f,0.0f);
    pVertices[3].vPosition = TDX_Vector3(1.0f,-1.0f,0.0f);
    
    pVertices[0].dwColor = TDX_Color(1.0f,1.0f,1.0f);
    pVertices[1].dwColor = TDX_Color(1.0f,1.0f,1.0f);
    pVertices[2].dwColor = TDX_Color(1.0f,1.0f,1.0f);
    pVertices[3].dwColor = TDX_Color(1.0f,1.0f,1.0f);
    
    pVertices[0].vTexture = TDX_Vector2(-1.0f,1.0f);
    pVertices[1].vTexture = TDX_Vector2(1.0f,1.0f);
    pVertices[2].vTexture = TDX_Vector2(-1.0f,-1.0f);
    pVertices[3].vTexture = TDX_Vector2(1.0f,-1.0f);
    
    VertexBuffer->Unlock();
    
}

/* ========================================================================== */
/* ==============================( Exit-Scene )============================== */
/* ========================================================================== */

void ExitScene()
{
    if( FAILED( hResult = g_TDX->GetDevice()->SetTexture( 0, NULL ) ) )
    {
        WriteToLog("SetTexture() Failed!");
        MessageBox(NULL,"SetTexture() Failed!","ERROR",MB_OK);
        g_TDX->Exit();
        return;
    }
    
    Texture1->Release();
    Texture1 = NULL;
    
    g_TDX->GetDevice()->SetStreamSource( 0, NULL, 0, 0);
    
    VertexBuffer->Release();
    VertexBuffer = NULL;
}

/* ========================================================================== */
/* ==============================( Render/Move )============================= */
/* ========================================================================== */

void Render(float fTime)
{
    /* ===== Transformationspipeline ===== */
    
    // -> D3DTS_PROJECTION
        static float Time =0;
        Time += fTime;              
        D3DXMATRIX TDX_PROJEKTIONSMATRIX = TDX_ProjectionMatrix( DEG_TO_RAD(90.0f),
                                                (float)g_TDX->GetWidth()/(float)g_TDX->GetHeight(),
                                                0.1f, 
                                                100.0f);
                                                
        g_TDX->GetDevice()->SetTransform( D3DTS_PROJECTION, &TDX_PROJEKTIONSMATRIX);
        
    // -> Trnslation / Rotation
        
        
        TDX_Matrix mTranslation ( TDX_TranslationMatrix( TDX_Vector3( 0.0f, 0.0f, 2.0f ) ) );
        TDX_Matrix mRotation ( TDX_RotationXYZMatrix( DEG_TO_RAD( 0 ) , DEG_TO_RAD( Time ) , DEG_TO_RAD( 0 ) ) );
        
        TDX_Matrix mWorld( mRotation * mTranslation );
        
        g_TDX->GetDevice()->SetTransform( D3DTS_WORLD, (D3DMATRIX*) (&mWorld) );
        
    /* ===== Clear ===== */
    
    if( FAILED( hResult = g_TDX->GetDevice()->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,0),1.0f,0)))
    {
        WriteToLog("Clear() Failed!");
        MessageBox(NULL,"Clear() Failed!","ERROR",MB_OK);
        g_TDX->Exit();
        return;
    }
    
    /* ===== Scene ===== */
    
    g_TDX->GetDevice()->BeginScene();
    
    g_TDX->GetDevice()->SetStreamSource(0, VertexBuffer, 0, sizeof(SVertex));
    
    if(FAILED( hResult = g_TDX->GetDevice()->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 1 ) ) ) // D3DPT_TRIANGLE / D3DPT_LINELIST / D3DPT_LINESTRIP / D3DPT_POINTLIST
    {
        WriteToLog("DrawPrimitiveUp() Failed!");
        MessageBox(NULL,"DrawPrimitiveUp() Failed!","ERROR",MB_OK);
        g_TDX->Exit();
        return;
    }
    
    g_TDX->GetDevice()->EndScene();
    
    g_TDX->GetDevice()->Present( NULL /* Pixelkoordinaten des sichtbaren BildPuffers*/ , 
                                NULL /* Pixelkoordinaten des sichtbaren ZielBildes*/ ,
                                NULL /* Handle des zu verwendenden Fensters */ ,
                                NULL /* kA */);
}

void Move(float fTime)
{
}

/* ========================================================================== */
/* ===============================( Win-Main )=============================== */
/* ========================================================================== */

int WINAPI WinMain (HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpszArgument,
                    int nFunsterStil)

{   
    TDX_Direct3D9 TDX(&hwnd,&hThisInstance,ENG,"Texturen");
    g_TDX = &TDX;
    
    if(g_TDX->Init() == TDX_OK)
    {   
        InitScene();        
        g_TDX->DoMessageLoop(Move,Render);
        ExitScene();
    }

    g_TDX->Exit();
    
    return 0;
}


Ich hoffe jemand kann mir da Helfen. Ist bestimmt eh nur irgendeine simpele kleine Sache und ich bin mal wieder nur zu doof :]
;>" Auf jedem Schiff das dampft und segelt ist einer der die Putzfrau vögelt. Und ist das Schiff auch noch so klein, einer muss die Putzfrau sein.

Frauen sind wie Computer. Man denkt: "Hättest du noch ein bisschen abgewartet, hättest du vermutlich was besseres gekriegt"

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »PeterPanzki07« (15.07.2010, 10:22)


GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

2

14.07.2010, 23:06

Was mir so beim Überfliegen deines Codes aufgefallen ist:
1.

C-/C++-Quelltext

1
2
3
4
pVertices[0].vTexture = TDX_Vector2(-1.0f,1.0f);
pVertices[1].vTexture = TDX_Vector2(1.0f,1.0f);
pVertices[2].vTexture = TDX_Vector2(-1.0f,-1.0f);
pVertices[3].vTexture = TDX_Vector2(1.0f,-1.0f);

Bist du sicher, dass das die Texturkoordinaten sind, die du willst? (Nur so nebenbei: 0,0 ist die linke obere Ecke und 1,1 die rechte untere Ecke der Textur)

2.
Besteht ein Rechteck wirklich nur aus einem Dreieck? Oder doch eher aus zwei?

C-/C++-Quelltext

1
g_TDX->GetDevice()->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 1 /*= Anzahl der Dreiecke. Versuch's mal mit 2 :)*/) 


3. Du verwendest als Z-Koordinate deines Rechtecks 0. Da du offensichtlich keine Kameramatrix setzt, wird die Standardmatrix verwendet. Bei dieser ist dein Rechteck allerdings nicht sichtbar. (Versuch's mal mit einer höheren Z-Koordinate oder einer Kamera an einer negativen Z-Position)
Signaturen werden überbewertet

3

14.07.2010, 23:17

Hmm .

zu 1.

Die Texturkoordinaten sind mir im Moment eigentlich egal. Außerdem werden die ja eh gekachelt und das war spontan die einfachste Variante die Textur passend drüber zu legen ;]


zu 2.

Das war noch ein fehler vom vielen Rumprobieren. ^^ Da stand auch schonmal 2 und steht es jz auch wieder ;]


zu 3.

Ich hab da auch noch ne Translationsmatrix die alles 2 einheiten nach vorne verschiebt.

C-/C++-Quelltext

1
2
3
4
5
6
TDX_Matrix mTranslation ( TDX_TranslationMatrix( TDX_Vector3( 0.0f, 0.0f, 2.0f ) ) );
        TDX_Matrix mRotation ( TDX_RotationXYZMatrix( DEG_TO_RAD( 0 ) , DEG_TO_RAD( Time ) , DEG_TO_RAD( 0 ) ) );
        
        TDX_Matrix mWorld( mRotation * mTranslation );
        
        g_TDX->GetDevice()->SetTransform( D3DTS_WORLD, (D3DMATRIX*) (&mWorld) );


Habs aber auch nochmal mit Koordinaten auf 2 setzen versucht.
Das hilft leider noch nicht :]
Trotzdem danke schonmal.

Vielleicht noch jemand anderes eine Idee? ^^
;>" Auf jedem Schiff das dampft und segelt ist einer der die Putzfrau vögelt. Und ist das Schiff auch noch so klein, einer muss die Putzfrau sein.

Frauen sind wie Computer. Man denkt: "Hättest du noch ein bisschen abgewartet, hättest du vermutlich was besseres gekriegt"

GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

4

15.07.2010, 00:02

Hab die Weltmatrix glatt übersehen :) sry..

Hast du schonmal versucht das ganze ohne Textur zu rendern? (vllt. liegts ja an der Textur)
Signaturen werden überbewertet

5

15.07.2010, 00:10

Hab ich auch schon gemacht ^^ ... Und so langsam hab ich echt keine ahnung woran es noch liegen könnte ^^ als ich das ganze noch mit DrawPrimitiveUp gemacht habe gings ...
dann einfach alles so belassen und halt die 2 Dreiecke in den Vertexbuffer und jz gehts nimmer ^^ Wenn ich das ganze zusätzlich noch mit Indizes mache läufts genauso wenig ^^ (wäre aber auch seltsam wenns dann ginge xD)

Help !

Ich hoffe irgendwer findet noch ne Lösung :]
;>" Auf jedem Schiff das dampft und segelt ist einer der die Putzfrau vögelt. Und ist das Schiff auch noch so klein, einer muss die Putzfrau sein.

Frauen sind wie Computer. Man denkt: "Hättest du noch ein bisschen abgewartet, hättest du vermutlich was besseres gekriegt"

6

15.07.2010, 10:20

Ok Problem gelöst :]

Ich habe

C-/C++-Quelltext

1
2
SVertex* pVertices;
VertexBuffer->Lock(0,0,(void**) pVertices ,D3DLOCK_NOSYSLOCK); // p.170


geschrieben hätte aber

C-/C++-Quelltext

1
2
SVertex* pVertices;
VertexBuffer->Lock(0,0,(void**) (&pVertices) ,D3DLOCK_NOSYSLOCK);  // p.170


schreiben müssen. Ich ja auch logisch bei einem (void**) ^^
;>" Auf jedem Schiff das dampft und segelt ist einer der die Putzfrau vögelt. Und ist das Schiff auch noch so klein, einer muss die Putzfrau sein.

Frauen sind wie Computer. Man denkt: "Hättest du noch ein bisschen abgewartet, hättest du vermutlich was besseres gekriegt"

Werbeanzeige