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);                
  • 相关阅读:
    Kubernetes之network: failed to set bridge addr: "cni0" already has an IP address different from xxx问题
    k8s的存储Volume
    系统漏洞扫描与分析软件
    linux图形化安装oracle
    JMX监控tomcat jdbc pool
    Hyper-V
    苹果手机
    读书
    clickhouse count
    clickhouse分布式表
  • 原文地址:https://www.cnblogs.com/RenderLife/p/2695665.html
Copyright © 2011-2022 走看看