Wedvich Skrevet 19. januar 2013 Del Skrevet 19. januar 2013 Jeg prøver å tegne en enkel trekant med Direct3D 11, men ingenting vises. Figuren defineres som dette: SimpleVertex vertices[] = { { XMFLOAT3( -1.0f, -1.0f, 0.0f ) }, { XMFLOAT3( 1.0f, -1.0f, 0.0f ) }, { XMFLOAT3( -1.0f, 1.0f, 0.0f ) }, }; Den forventede outputen er en trekant med et vinkehjørne i øvre venstre hjørne av skjermen, ett i øvre høyre hjørne av skjermen, og ett i nedre venstre hjørne av skjermen. Men det som kommer ut i stedet er... vel, ingenting. Jeg utfører ingen matrisetransformasjoner, og vertexshaderen returnerer akkurat det samme som den får inn. Alt ser ut til å initialiseres riktig, og når jeg bruker graphics debuggeren i Visual Studio 2012 ser jeg at riktig posisjon for vertexen blir gitt til shaderen. Men når jeg ser på pipelinen, hopper den direkte fra vertexshaderen til output merger. Jeg regner med at det betyr at ingenting sendes til pixelshaderen, noe som igjen betyr at rasterizeren ikke tar imot vertexene jeg gir den. Hva er det som gjør dette? Her er rasterizer state'en min: D3D11_RASTERIZER_DESC rasterizerDesc; rasterizerDesc.AntialiasedLineEnable = false; rasterizerDesc.CullMode = D3D11_CULL_NONE; rasterizerDesc.DepthBias = 0; rasterizerDesc.DepthBiasClamp = 0.0f; rasterizerDesc.DepthClipEnable = true; rasterizerDesc.FillMode = D3D11_FILL_SOLID; rasterizerDesc.FrontCounterClockwise = false; rasterizerDesc.MultisampleEnable = false; rasterizerDesc.ScissorEnable = false; rasterizerDesc.SlopeScaledDepthBias = 0.0f; Og her er viewporten (width og height er like som oppløsningen jeg setter kliantrektangelet til, som er 1024x576 i dette tilfellet): D3D11_VIEWPORT viewport; viewport.Height = static_cast< float >( height ); viewport.MaxDepth = 1.0f; viewport.MinDepth = 0.0f; viewport.TopLeftX = 0.0f; viewport.TopLeftY = 0.0f; viewport.Width = static_cast< float >( width ); Kan noen se hva det er som gjør at rasterizeren hopper over vertexene mine? Eller kan det eventuelt være andre deler av Direct3D-oppsettet mitt som gjør at dette skjer? Lenke til kommentar
GeirGrusom Skrevet 19. januar 2013 Del Skrevet 19. januar 2013 Hva gjør vertex shaderen og pixelshaderen? Lenke til kommentar
Wedvich Skrevet 19. januar 2013 Forfatter Del Skrevet 19. januar 2013 Vertex shaderen spytter ut ubehandlet input: float4 main( float4 pos : POSITION ) : SV_POSITION { return pos; } Mens pixel shaderen ganske enkelt returnerer hvit: float4 main() : SV_TARGET { return float4( 1.0f, 1.0f, 1.0f, 1.0f ); } Lenke til kommentar
Wedvich Skrevet 20. januar 2013 Forfatter Del Skrevet 20. januar 2013 Jeg fikk ordnet feilen, og den lå i renderfunksjonen. Hadde satt stride i vertexbufferen til 0 i stedet for størrelsen på vertex-structen min, og da kommer det naturligvis ingen vei... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå