find out how dx11 not works
This commit is contained in:
@@ -103,6 +103,7 @@ private:
|
||||
ComPtr<ID3D11InputLayout> input_layout; ///< 输入布局
|
||||
ComPtr<ID3D11Buffer> vertex_buffer; ///< 顶点缓冲
|
||||
ComPtr<ID3D11DepthStencilState> depth_state; ///< 深度状态
|
||||
ComPtr<ID3D11RasterizerState> rasterizer_state; ///< 光栅化状态
|
||||
std::vector<BYTE> depth_data; ///< 深度数据
|
||||
|
||||
public:
|
||||
@@ -194,6 +195,13 @@ public:
|
||||
ds_desc.DepthFunc = D3D11_COMPARISON_LESS;
|
||||
DXCHK(device->CreateDepthStencilState(&ds_desc, &depth_state));
|
||||
|
||||
// 设置光栅化模式
|
||||
D3D11_RASTERIZER_DESC rasterizer_desc;
|
||||
ZeroMemory(&rasterizer_desc, sizeof(D3D11_RASTERIZER_DESC));
|
||||
rasterizer_desc.FillMode = D3D11_FILL_SOLID;
|
||||
rasterizer_desc.CullMode = D3D11_CULL_NONE;
|
||||
DXCHK(device->CreateRasterizerState(&rasterizer_desc, &rasterizer_state));
|
||||
|
||||
// 视口
|
||||
D3D11_VIEWPORT vp;
|
||||
ZeroMemory(&vp, sizeof(D3D11_VIEWPORT));
|
||||
@@ -217,36 +225,32 @@ public:
|
||||
// 缩放深度数据数组到指定大小
|
||||
depth_data.resize(this->config.width * this->config.height * sizeof(float));
|
||||
|
||||
// 设置管线
|
||||
context->OMSetRenderTargets(1, rtv.GetAddressOf(), dsv.Get());
|
||||
context->OMSetDepthStencilState(depth_state.Get(), 1);
|
||||
context->VSSetShader(vs.Get(), nullptr, 0);
|
||||
context->PSSetShader(ps.Get(), nullptr, 0);
|
||||
context->IASetInputLayout(input_layout.Get());
|
||||
UINT stride = sizeof(Vertex), offset = 0;
|
||||
context->IASetVertexBuffers(0, 1, vertex_buffer.GetAddressOf(), &stride, &offset);
|
||||
context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
|
||||
|
||||
//frameCount = 0;
|
||||
}
|
||||
|
||||
virtual void Tick() override {
|
||||
IEngine::Tick();
|
||||
|
||||
MSG msg;
|
||||
GetMessage(&msg, nullptr, 0, 0);
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
|
||||
// 清屏
|
||||
float clear_color[] = {0.8f, 0.1f, 0.1f, 1.0f};
|
||||
context->ClearRenderTargetView(rtv.Get(), clear_color);
|
||||
//context->ClearDepthStencilView(dsv.Get(), D3D11_CLEAR_DEPTH, 1.0f, 0);
|
||||
context->ClearDepthStencilView(dsv.Get(), D3D11_CLEAR_DEPTH, 1.0f, 0);
|
||||
|
||||
//// 设置管线
|
||||
//context->OMSetRenderTargets(1, rtv.GetAddressOf(), dsv.Get());
|
||||
//context->OMSetDepthStencilState(depth_state.Get(), 1);
|
||||
//context->VSSetShader(vs.Get(), nullptr, 0);
|
||||
//context->PSSetShader(ps.Get(), nullptr, 0);
|
||||
//context->IASetInputLayout(input_layout.Get());
|
||||
//UINT stride = sizeof(Vertex), offset = 0;
|
||||
//context->IASetVertexBuffers(0, 1, vertex_buffer.GetAddressOf(), &stride, &offset);
|
||||
//context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
|
||||
// 设置管线
|
||||
context->OMSetRenderTargets(1, rtv.GetAddressOf(), dsv.Get());
|
||||
context->OMSetDepthStencilState(depth_state.Get(), 1);
|
||||
context->RSSetState(rasterizer_state.Get());
|
||||
context->VSSetShader(vs.Get(), nullptr, 0);
|
||||
context->PSSetShader(ps.Get(), nullptr, 0);
|
||||
context->IASetInputLayout(input_layout.Get());
|
||||
UINT stride = sizeof(Vertex), offset = 0;
|
||||
context->IASetVertexBuffers(0, 1, vertex_buffer.GetAddressOf(), &stride, &offset);
|
||||
context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
|
||||
|
||||
// 绘制立方体
|
||||
context->Draw(sizeof(CubeVertices) / sizeof(Vertex), 0); // 自动计算顶点数
|
||||
|
||||
Reference in New Issue
Block a user