修复rect_pipeline绘制错误

修复rounded_rect_pipeline日志文本错误
This commit is contained in:
Nanako 2024-11-06 19:41:10 +08:00
parent 1a10d65de1
commit 4de6e2d965
7 changed files with 17 additions and 31 deletions

View File

@ -170,16 +170,16 @@ bool dx_renderer::init() {
return false;
}
default_pipeline.init();
rounded_rect_pipeline.init();
rect_p.init();
rounded_rect_p.init();
return true;
}
void dx_renderer::destroy() {
if (blend_state) blend_state->Release();
default_pipeline.destroy();
rounded_rect_pipeline.destroy();
rect_p.destroy();
rounded_rect_p.destroy();
glfwTerminate();
}

View File

@ -19,8 +19,8 @@ public:
[[nodiscard]] ID3D11Device* get_d3d_device() const { return device; }
[[nodiscard]] ID3D11DeviceContext* get_d3d_context() const { return context; }
rect_pipeline* get_rect_pipeline() override { return &default_pipeline; }
rounded_rect_pipeline* get_rounded_rect_pipeline() override { return &rounded_rect_pipeline; }
rect_pipeline* get_rect_pipeline() override { return &rect_p; }
rounded_rect_pipeline* get_rounded_rect_pipeline() override { return &rounded_rect_p; }
[[nodiscard]] ID3D11BlendState* get_blend_state() const { return blend_state; }
std::vector<char> load_shader(const std::string& shader_name) override;
@ -35,7 +35,7 @@ private:
ID3D11DeviceContext* context = nullptr;
ID3D11BlendState* blend_state = nullptr;
dx_rect_pipeline default_pipeline;
dx_rounded_rect_pipeline rounded_rect_pipeline;
dx_rect_pipeline rect_p;
dx_rounded_rect_pipeline rounded_rect_p;
};

View File

@ -7,8 +7,8 @@ bool dx_rect_pipeline::init() {
auto renderer = aorii::get_renderer<dx_renderer>();
const auto d3d_device = renderer->get_d3d_device();
const auto& vertex_shader_code = renderer->load_shader(AORII_DEFAULT_VERTEX_SHADER_NAME);
const auto& pixel_shader_code = renderer->load_shader(AORII_DEFAULT_PIXEL_SHADER_NAME);
const auto& vertex_shader_code = renderer->load_shader("aorii_rect_vertex_main");
const auto& pixel_shader_code = renderer->load_shader("aorii_rect_pixel_main");
auto hr = d3d_device->CreateVertexShader(vertex_shader_code.data(), vertex_shader_code.size(), nullptr, &vertex_shader);
if (FAILED(hr)) {
@ -22,7 +22,8 @@ bool dx_rect_pipeline::init() {
}
D3D11_INPUT_ELEMENT_DESC layout_desc[] = {
{ "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 8, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{"TEXCOORD", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 8, D3D11_INPUT_PER_VERTEX_DATA, 0},
{ "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 16, D3D11_INPUT_PER_VERTEX_DATA, 0 },
};
constexpr int32_t element_count = sizeof(layout_desc) / sizeof(D3D11_INPUT_ELEMENT_DESC);
hr = d3d_device->CreateInputLayout(layout_desc, element_count, vertex_shader_code.data(), vertex_shader_code.size(), &input_layout);

View File

@ -7,17 +7,17 @@ bool dx_rounded_rect_pipeline::init() {
auto renderer = aorii::get_renderer<dx_renderer>();
const auto d3d_device = renderer->get_d3d_device();
const auto& vertex_shader_code = renderer->load_shader(AORII_DEFAULT_VERTEX_SHADER_NAME);
const auto& pixel_shader_code = renderer->load_shader(AORII_DEFAULT_PIXEL_SHADER_NAME);
const auto& vertex_shader_code = renderer->load_shader("aorii_rounded_rect_vertex_main");
const auto& pixel_shader_code = renderer->load_shader("aorii_rounded_rect_pixel_main");
auto hr = d3d_device->CreateVertexShader(vertex_shader_code.data(), vertex_shader_code.size(), nullptr, &vertex_shader);
if (FAILED(hr)) {
spdlog::critical("rect_pipeline 无法创建顶点着色器: {0}", hr);
spdlog::critical("rounded_rect_pipeline 无法创建顶点着色器: {0}", hr);
return false;
}
hr = d3d_device->CreatePixelShader(pixel_shader_code.data(), pixel_shader_code.size(), nullptr, &pixel_shader);
if (FAILED(hr)) {
spdlog::critical("rect_pipeline 无法创建像素着色器: {0}", hr);
spdlog::critical("rounded_rect_pipeline 无法创建像素着色器: {0}", hr);
return false;
}
D3D11_INPUT_ELEMENT_DESC layout_desc[] = {

View File

@ -6,10 +6,6 @@
#include "core/renderer/renderer_buffer.h"
#include "misc/color.h"
#define AORII_DEFAULT_PIXEL_SHADER_NAME "default_shader_pixel_main"
#define AORII_DEFAULT_ROUNDED_RECT_PIXEL_SHADER_NAME "default_shader_rounded_rect_pixel_main"
#define AORII_DEFAULT_VERTEX_SHADER_NAME "default_shader_vertex_main"
struct aorii_vertex {
Eigen::Vector2f position;
Eigen::Vector2f uv;

View File

@ -21,12 +21,6 @@ public:
template<class T>
bool set_data(const T& in_data) {
#if DEBUG
if (sizeof(T) != element_byte) {
spdlog::error("数据大小不匹配");
return false;
}
#endif
if (auto data = lock()) {
memcpy(data, &in_data, sizeof(T));
unlock();
@ -39,12 +33,6 @@ public:
}
template<class T>
bool set_data(const std::span<const T>& in_data) {
#if DEBUG
if (sizeof(T) != element_byte) {
spdlog::error("数据大小不匹配");
return false;
}
#endif
if (auto data = lock()) {
memcpy(data, in_data.data(), sizeof(T) * in_data.size());
unlock();

View File

@ -6,6 +6,7 @@ ParameterBlock<ParamBuffer> param_buffer : register(b0);
struct VSInput {
float2 position : POSITION; // 窗口坐标
float2 uv : TEXCOORD0; // 纹理坐标
float4 color : COLOR; // 颜色
};