zoukankan      html  css  js  c++  java
  • 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);                
  • 相关阅读:
    异常处理
    组合,封装
    自我介绍
    27python更多实例
    28python类代码编写细节
    29python运算符重载
    30python 类的设计
    31python类的高级主题
    32python异常基础
    33python异常编码细节
  • 原文地址:https://www.cnblogs.com/RenderLife/p/2695665.html
Copyright © 2011-2022 走看看