Gå til innhold

[Løst] Direct3D 11 - ingen input til pixelshaderen


Anbefalte innlegg

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
Videoannonse
Annonse

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...