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