Problem mit rhw
-
Hallo,
ich versuche z.Zt verzweifelt ein rhw Dreieck auf den Bildschirm zu bekommen. Ich bin mir ziemlich sicher, dass ich alles richtig gemacht hab, trotzdem bekomme ich einfach nichts zu sehenHier wird der Vertex- bzw. Indexbuffer erstellt:
Code:
[ void* pVertices = NULL; WORD* pIndices = NULL; WORD i[3] = { 0, 1, 2 }; VERTEX v[] = { { 50.0f, 50.0f, 0.0f, 1.0f, 0xffff0000 }, // x, y, z, rhw, farbe { 250.0f, 250.0f, 0.0f, 1.0f, 0xff00ff00 }, { 50.0f, 250.0f, 0.0f, 1.0f, 0xff00ffff } }; if( FAILED (g_pDevice->CreateVertexBuffer( 3 * sizeof(VERTEX), 0, 0, D3DPOOL_DEFAULT, &m_VBGrid, NULL))) { g_Basics->leLog2File("Create Vertex Buffer() failed", 1); return FALSE; } if( FAILED (m_VBGrid->Lock(0, sizeof(v), (void**)&pVertices, 0))) { g_Basics->leLog2File("Lock VertexBuffer failed", 1); return FALSE; } memcpy(pVertices, v, sizeof(v)); m_VBGrid->Unlock(); ////////////INDEX BUFFER///////////////////////// if( FAILED (g_pDevice->CreateIndexBuffer( sizeof(i), 0, D3DFMT_INDEX16, D3DPOOL_DEFAULT, &m_IBGrid, NULL))) { g_Basics->leLog2File("CreateIndexBuffer() failed", 1); return FALSE; } if( FAILED (m_IBGrid->Lock(0, sizeof(i), (void**)&pIndices, 0))) { g_Basics->leLog2File("Lock IndexBuffer failed", 1); return FALSE; } memcpy(pIndices, i, sizeof(i)); m_IBGrid->Unlock(); return TRUE; Die Struktur: Code: [cpp] struct VERTEX { float x, y, z, rhw; DWORD color; }; #define D3DFVF_VERTEX ( D3DFVF_XYZRHW | D3DFVF_DIFFUSE )
ok, und jetzt die Renderfunktion:
Code:
g_pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); g_pDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); g_pDevice->SetFVF (D3DFVF_VERTEX ); g_pDevice->BeginScene(); g_pDevice->SetIndices (m_IBGrid); g_pDevice->SetStreamSource (0, m_VBGrid,0, sizeof(D3DFVF_VERTEX)); if( FAILED (g_pDevice->DrawIndexedPrimitive( D3DPT_TRIANGLELIST, 0, 0, 2, 0, 1) )) { g_Basics->leLog2File("DrawPrimitive() failed", 1); } g_pDevice->EndScene(); if( FAILED (g_pDevice->Present(NULL, NULL, NULL, NULL))) { g_Basics->leLog2File("Present() failed", 1); return FALSE; } return TRUE;
ich suche jetzt schon seit Tagen und vergleiche meinen Code immer mit anderen, doch ich finde keinen Fehler
Wäre echt nett, wenn jemand mir sagen könnte, woran das liegt, das nichts gerendert wird.
Bye
-
du scheinst mir ein backface zu zeichnen, könnte es daran liegen?
rapso->greets();
-
sorry, aber damit kann ich gar nix anfangen
was meinst du damit, backface zeichnen ??
-
Nachtrag:
jetzt seh ich plötzlich ein Dreieck, allerdings flackert es wie willt in den 3 Farben, die ich angegeben hab.
Woran kann sowas liegen ?
-
culling: je nachdem ob ein polygone dir zugewendet oder abgewendet ist wird es gezeichnet oder nicht, damit es auf jeden fall gezeichnet wird mußte das culling auf NONE setzen, normalerweise ist es auf CCW eingestellt... irgendwo bei den RenderSates
was hast du gemacht dass es flackert? bzw überhaupt zu sehen ist?
-
ich hab das Fenster (es läuft im Fenstermodus) verkleinert.
Culling hab ich bereits ausgeschaltet:g_pDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);