dx11 shader部分笔记

dx11 04shader渲染

  1. intialize
  • D3DX11CompileFromFile

    (vsFilename,NULL,NULL,"ColorVertexShader","vs_5_0",D3D10_SHADER_ENABLE_STRICTNESS,0,NULL,
    &vertexShaderBuffer,&errorMessage,NULL);



  • D3DX11CompileFromFile

    (psFilename,NULL,NULL,"ColorPixelShader","ps_5_0",
    D3D10_SHADER_ENABLE_STRICTNESS,0,NULL,&pixelShaderBuffer,&errorMessage,NULL);

  • CreateVertexShader

    (vertexShaderBuffer->GetBufferPointer(),vertexShaderBuffer->GetBufferSize(),
    NULL,&m_vertexShader);

  • CreatePixelShader

    (pixelShaderBuffer->GetBufferPointer(),pixelShaderBuffer->GetBufferSize(),
    NULL,&m_pixelShader);

  • set up D3D11_INPUT_ELEMENT_DESC
  • CreateInputLayout

    (&polygonLayout[0],numElements,vertexShaderBuffer->GetBufferPointer(),
    vertexShaderBuffer->GetBufferSize(),&m_layout);

  • vertexShaderBuffer->Release();pixelShaderBuffer->Release();
  • set up D3D11_BUFFER_DESC
  • CreateBuffer(&matrixBufferDesc,NULL,&m_matrixBuffer);

2.Shutdown

  • m_matrixBuffer 
  • m_layout
  • m_pixelShader
  • m_vertexShader

 

 3.Render

  • SetShaderParameters

 (ID3D11DeviceContext* deviceContext, D3DXMATRIX worldMatrix,
 D3DXMATRIX viewMatrix, D3DXMATRIX projectionMatrix)  

    • D3DXMatrixTranspose(&worldMatrix, &worldMatrix);

       D3DXMatrixTranspose(&viewMatrix, &viewMatrix);

      D3DXMatrixTranspose(&projectionMatrix, &projectionMatrix);

      巨坑 dx11要求必须转置

    • deviceContext->Map(m_matrixBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &mappedResource);//Lock the constant buffer so it can be written by gpu
    • 用(MatrixBufferType*)mappedResource.pData设置
    •  deviceContext->Unmap(m_matrixBuffer, 0);
    • deviceContext->VSSetConstantBuffers(bufferNumber, 1, &m_matrixBuffer);更新常量缓存
  • RenderShader
    • deviceContext->IASetInputLayout绑定布局
    •   deviceContext->VSSetShader(m_vertexShader, NULL, 0); 
          deviceContext->PSSetShader(m_pixelShader, NULL, 0);    
    •  deviceContext->DrawIndexed(indexCount, 0, 0);                
原文地址:https://www.cnblogs.com/RenderLife/p/2695665.html