修复rect_pipeline绘制错误
修复rounded_rect_pipeline日志文本错误
This commit is contained in:
parent
1a10d65de1
commit
4de6e2d965
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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[] = {
|
||||
|
@ -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;
|
||||
|
@ -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();
|
||||
|
@ -6,6 +6,7 @@ ParameterBlock<ParamBuffer> param_buffer : register(b0);
|
||||
|
||||
struct VSInput {
|
||||
float2 position : POSITION; // 窗口坐标
|
||||
float2 uv : TEXCOORD0; // 纹理坐标
|
||||
float4 color : COLOR; // 颜色
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user