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);                
  • 相关阅读:
    fstat、stat和lstat 区别
    listen()函数中的SOMAXCONN含义
    #ifndef#define#endif的用法(整理)
    stdin和STDIN_FILENO的区别(转)
    S_ISREG等几个常见的宏
    *_t 数据类型
    IO模式精细讲解: MSG_DONTWAIT 、 MSG_WAITALL
    c标准函数库(查阅使用)
    stdint.h
    C# RichTextBox控件常用屬性和事件
  • 原文地址:https://www.cnblogs.com/RenderLife/p/2695665.html
Copyright © 2011-2022 走看看