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);                
  • 相关阅读:
    ShellExecuteEX打开iqy文件导致excel hang的原因分析
    3种方法遍历商人访问5个城市问题
    用CRT查找内存泄漏
    同步异步和阻塞5-异步非阻塞
    同步异步和阻塞4-同步非阻塞
    同步异步和阻塞3-同步阻塞
    同步异步和阻塞2-测试小项目
    同步异步和阻塞1
    IDA分析脱壳后丢失导入表的PE
    计算机中补码的数学运算逻辑及证明
  • 原文地址:https://www.cnblogs.com/RenderLife/p/2695665.html
Copyright © 2011-2022 走看看