dx11 04shader渲染
- 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);更新常量缓存
- D3DXMatrixTranspose(&worldMatrix, &worldMatrix);
- RenderShader
- deviceContext->IASetInputLayout绑定布局
- deviceContext->VSSetShader(m_vertexShader, NULL, 0);
deviceContext->PSSetShader(m_pixelShader, NULL, 0); - deviceContext->DrawIndexed(indexCount, 0, 0);