Simples Quadrat mit DX9 rendern, Crash bei DrawIndexedPrimitive



  • Hallo!
    Ich habe D3D richtig initialisiert und bekomme mit folgendem Code bei DrawIndexedPrimitive einen Crash:

    Initialisation:

    dwIndicies = new WORD[36];
    	v = new TVertex[8];
    
    	v[0].position.x = 0.0f;
    	v[0].position.y = 0.0f;
    	v[0].position.z = 0.0f;
    
    	v[1].position.x = 0.0f;
    	v[1].position.y = 1.0f;
    	v[1].position.z = 0.0f;
    
    	v[2].position.x = 0.0f;
    	v[2].position.y = 0.0f;
    	v[2].position.z = 1.0f;
    
    	v[3].position.x = 0.0f;
    	v[3].position.y = 1.0f;
    	v[3].position.z = 1.0f;
    
    	v[4].position.x = 1.0f;
    	v[4].position.y = 0.0f;
    	v[4].position.z = 0.0f;
    
    	v[5].position.x = 1.0f;
    	v[5].position.y = 1.0f;
    	v[5].position.z = 0.0f;
    
    	v[6].position.x = 1.0f;
    	v[6].position.y = 0.0f;
    	v[6].position.z = 1.0f;
    
    	v[7].position.x = 1.0f;
    	v[7].position.y = 1.0f;
    	v[7].position.z = 1.0f;
    
    	dwIndicies[0] = 0;
    	dwIndicies[1] = 1;
    	dwIndicies[2] = 3;
    
    	dwIndicies[3] = 0;
    	dwIndicies[4] = 2;
    	dwIndicies[5] = 3;
    
    	dwIndicies[6] = 2;
    	dwIndicies[7] = 3;
    	dwIndicies[8] = 7;
    
    	dwIndicies[9] = 2;
    	dwIndicies[10] = 6;
    	dwIndicies[11] = 7;
    
    	dwIndicies[12] = 4;
    	dwIndicies[13] = 5;
    	dwIndicies[14] = 6;
    
    	dwIndicies[15] = 4;
    	dwIndicies[16] = 6;
    	dwIndicies[17] = 7;
    
    	dwIndicies[18] = 0;
    	dwIndicies[19] = 1;
    	dwIndicies[20] = 5;
    
    	dwIndicies[21] = 0;
    	dwIndicies[22] = 2;
    	dwIndicies[23] = 5;
    
    	dwIndicies[24] = 1;
    	dwIndicies[25] = 3;
    	dwIndicies[26] = 7;
    
    	dwIndicies[27] = 1;
    	dwIndicies[28] = 5;
    	dwIndicies[29] = 7;
    
    	dwIndicies[30] = 0;
    	dwIndicies[31] = 2;
    	dwIndicies[32] = 6;
    
    	dwIndicies[33] = 0;
    	dwIndicies[34] = 4;
    	dwIndicies[35] = 6;
    
    	bValidModel = TRUE;
    
    	dwNumMaterials = 1;
    
    		if(dd_obj->lpD3DDevice->CreateVertexBuffer( 8*sizeof(TVertex),
    			0, D3DFVF_CUSTOMVERTEX,
    			D3DPOOL_DEFAULT, &D3D_VertexBuffer, 0) != D3D_OK)
    			MessageBox(0, "fehl0r", 0, 0);
    
    		if(D3D_VertexBuffer->Lock( 0, 8*sizeof(TVertex), (void**)&pVertex, 0 ) != D3D_OK)
    			MessageBox(0, "fehl0r", 0, 0);
    		memcpy( pVertex, v, 8*sizeof(TVertex) );
    		if(D3D_VertexBuffer->Unlock() != D3D_OK)
    			MessageBox(0, "fehl0r", 0, 0);
    
    		if(dd_obj->lpD3DDevice->CreateIndexBuffer(36*sizeof(WORD), 0, D3DFMT_INDEX16, D3DPOOL_MANAGED, &D3D_IndexBuffer, 0) != D3D_OK)
    			MessageBox(0, "fehl0r", 0, 0);
    		if(D3D_IndexBuffer->Lock(0, 36*sizeof(WORD), (void**)&pIndex, 0) != D3D_OK)
    			MessageBox(0, "fehl0r", 0, 0);
    		memcpy(pIndex, dwIndicies, 36*sizeof(WORD));
    		if(D3D_IndexBuffer->Unlock() != D3D_OK)
    				MessageBox(0, "fehl0r", 0, 0);
    
    		if(dd_obj->lpD3DDevice->SetStreamSource( 0, D3D_VertexBuffer, sizeof(TVertex), 0) != D3D_OK)//VTriangle.D3D_VertexBuffer, sizeof(TVertex) );
    				MessageBox(0, "fehl0r", 0, 0);
    		if(dd_obj->lpD3DDevice->SetFVF( D3DFVF_CUSTOMVERTEX ) != D3D_OK)	
    				MessageBox(0, "fehl0r", 0, 0);
    
    		if(dd_obj->lpD3DDevice->SetIndices(D3D_IndexBuffer) != D3D_OK)
    				MessageBox(0, "fehl0r", 0, 0);
    

    Ich bekomme keinen "fehl0r" :D....
    dann beim Rendern:

    dd_obj->lpD3DDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);
    
    		dd_obj->lpD3DDevice->SetStreamSource( 0, D3D_VertexBuffer, sizeof(TVertex), 0);
    
    		dd_obj->lpD3DDevice->SetIndices(D3D_IndexBuffer);	
    
    				dd_obj->lpD3DDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 36, 0, 12);
    

    Zusatz:

    struct TVertex
    {
    	D3DXVECTOR3 position; // Ortsvektor des Vertex
    	float nx, ny, nz; //Lighting Normal
    	float tu, tv;
    }; 
    
    #define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1)
    

    Ich hoffe ihr könnt mir helfen.

    Danke,
    Gruß,
    Compiler



  • Bitte lesen. Danke.

    Bye, TGGC (Reden wie die Großen)



  • Hi,
    konnte das Problem leider noch nicht beheben :(. Kannst du mir nicht einen kleinen Tipp geben?
    Compiler



  • Fehler schreibt sich ohne O.

    Bye, TGGC \-/



  • das ist ja auch ne 0 (null). 🙂 Sag mir doch bitte wo der Fehler liegt, der Funktionsaufruf, indem der erste Fehler gemacht wird, würde mir schon reichen.



  • SetStreamSource
    hier hab ich die letzten beiden Parameter vertauscht, meintest du das? Leider immernoch der gleiche Crash....grml 😕

    /EDIT
    Hatte das ja zweimal drin, thx 4 Hilfe zur Selbsthilfe



  • Dafür bin ich doch da. 😎

    Bye, TGGC \-/


Anmelden zum Antworten