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);                
  • 相关阅读:
    Hibernate中的HQL
    hibernate配置数据库连接池三种用法
    Hibernate的延迟检索和立即检索
    Hibernate关系映射中的注解
    Hibernate的多种关系映射(oto、otm、mtm)
    自然主键和代理主键的区别
    Hibernate的xml方法配置和操作代码
    Hibernate简介
    VirtualBox从USB设备(PE)启动图文教程
    属性动画
  • 原文地址:https://www.cnblogs.com/RenderLife/p/2695665.html
Copyright © 2011-2022 走看看