mirror of
https://github.com/seekrs/MacroLibX.git
synced 2026-01-12 07:03:34 +00:00
working pixel put pipeline
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/10/04 17:36:44 by maldavid #+# #+# */
|
||||
/* Updated: 2023/03/31 20:30:14 by maldavid ### ########.fr */
|
||||
/* Updated: 2023/04/01 11:55:19 by maldavid ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -29,18 +29,6 @@ namespace mlx
|
||||
_renderer->setWindow(this);
|
||||
_renderer->init();
|
||||
_renderer->getPixelPutPipeline().init(w, h, *_renderer);
|
||||
|
||||
std::vector<Vertex> vertexData = {
|
||||
{{0, 0}, {1.f, 0.f, 0.f}, {0.0f, 0.0f}},
|
||||
{{_width, 0}, {1.f, 0.f, 0.f}, {1.0f, 0.0f}},
|
||||
{{_width, _height}, {1.f, 0.f, 0.f}, {1.0f, 1.0f}},
|
||||
{{0, _height}, {1.f, 0.f, 0.}, {0.0f, 1.0f}}
|
||||
};
|
||||
|
||||
std::vector<uint16_t> indexData = { 0, 1, 2, 2, 3, 0 };
|
||||
|
||||
_vbo.create(sizeof(Vertex) * vertexData.size(), vertexData.data());
|
||||
_ibo.create(sizeof(uint16_t) * indexData.size(), indexData.data());
|
||||
}
|
||||
|
||||
bool MLX_Window::beginFrame()
|
||||
@@ -68,21 +56,15 @@ namespace mlx
|
||||
sets.push_back(_renderer->getPixelPutPipeline().getDescriptorSet());
|
||||
|
||||
vkCmdBindDescriptorSets(cmd_buff, VK_PIPELINE_BIND_POINT_GRAPHICS, _renderer->getPipeline().getPipelineLayout(), 0, sets.size(), sets.data(), 0, nullptr);
|
||||
|
||||
_renderer->getPixelPutPipeline().render(*_renderer);
|
||||
|
||||
_vbo.bind(*_renderer);
|
||||
_ibo.bind(*_renderer);
|
||||
|
||||
vkCmdDrawIndexed(cmd_buff, static_cast<uint32_t>(_ibo.getSize() / sizeof(uint16_t)), 1, 0, 0, 0);
|
||||
|
||||
_renderer->endFrame();
|
||||
}
|
||||
|
||||
MLX_Window::~MLX_Window()
|
||||
{
|
||||
_renderer->destroy();
|
||||
_staging_buffer.destroy();
|
||||
_vbo.destroy();
|
||||
_ibo.destroy();
|
||||
if(_win)
|
||||
SDL_DestroyWindow(_win);
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/10/04 21:53:12 by maldavid #+# #+# */
|
||||
/* Updated: 2023/03/31 22:16:01 by maldavid ### ########.fr */
|
||||
/* Updated: 2023/04/01 11:54:09 by maldavid ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -19,8 +19,6 @@
|
||||
#include <renderer/renderer.h>
|
||||
#include <renderer/images/vk_image.h>
|
||||
#include <renderer/buffers/vk_buffer.h>
|
||||
#include <renderer/buffers/vk_vbo.h>
|
||||
#include <renderer/buffers/vk_ibo.h>
|
||||
|
||||
namespace mlx
|
||||
{
|
||||
@@ -40,8 +38,6 @@ namespace mlx
|
||||
~MLX_Window();
|
||||
|
||||
private:
|
||||
C_VBO _vbo;
|
||||
C_IBO _ibo;
|
||||
glm::mat4 _proj = glm::mat4(1.0);
|
||||
std::unique_ptr<Renderer> _renderer;
|
||||
SDL_Window* _win = nullptr;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2022/12/18 21:27:38 by maldavid #+# #+# */
|
||||
/* Updated: 2023/03/31 18:56:25 by maldavid ### ########.fr */
|
||||
/* Updated: 2023/04/01 12:53:28 by maldavid ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@@ -41,60 +41,54 @@ namespace mlx
|
||||
{
|
||||
Out.Color = aColor;
|
||||
Out.UV = aUV;
|
||||
vec4 position = vec4(aPos.x, aPos.y, 0.0, 1.0) * uProj.mat;
|
||||
gl_Position = vec4(position.x, position.y, 0.0, 1.0);
|
||||
gl_Position = uProj.mat * vec4(aPos.x, aPos.y, 0.0, 1.0);
|
||||
}
|
||||
*/
|
||||
const std::vector<uint32_t> vertex_shader = {
|
||||
0x07230203,0x00010000,0x0008000b,0x0000003b,0x00000000,0x00020011,0x00000001,0x0006000b,
|
||||
0x07230203,0x00010000,0x0008000b,0x00000033,0x00000000,0x00020011,0x00000001,0x0006000b,
|
||||
0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
|
||||
0x000a000f,0x00000000,0x00000004,0x6e69616d,0x00000000,0x0000000b,0x0000000f,0x00000015,
|
||||
0x0000001c,0x00000032,0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004,0x6e69616d,
|
||||
0x0000001c,0x00000024,0x00030003,0x00000002,0x000001c2,0x00040005,0x00000004,0x6e69616d,
|
||||
0x00000000,0x00030005,0x00000009,0x00000000,0x00050006,0x00000009,0x00000000,0x6f6c6f43,
|
||||
0x00000072,0x00040006,0x00000009,0x00000001,0x00005655,0x00030005,0x0000000b,0x0074754f,
|
||||
0x00040005,0x0000000f,0x6c6f4361,0x0000726f,0x00030005,0x00000015,0x00565561,0x00050005,
|
||||
0x0000001b,0x69736f70,0x6e6f6974,0x00000000,0x00040005,0x0000001c,0x736f5061,0x00000000,
|
||||
0x00050005,0x00000029,0x6f725075,0x7463656a,0x006e6f69,0x00040006,0x00000029,0x00000000,
|
||||
0x0074616d,0x00040005,0x0000002b,0x6f725075,0x0000006a,0x00060005,0x00000030,0x505f6c67,
|
||||
0x65567265,0x78657472,0x00000000,0x00060006,0x00000030,0x00000000,0x505f6c67,0x7469736f,
|
||||
0x006e6f69,0x00030005,0x00000032,0x00000000,0x00040047,0x0000000b,0x0000001e,0x00000000,
|
||||
0x00040047,0x0000000f,0x0000001e,0x00000001,0x00040047,0x00000015,0x0000001e,0x00000002,
|
||||
0x00040047,0x0000001c,0x0000001e,0x00000000,0x00040048,0x00000029,0x00000000,0x00000005,
|
||||
0x00050048,0x00000029,0x00000000,0x00000023,0x00000000,0x00050048,0x00000029,0x00000000,
|
||||
0x00000007,0x00000010,0x00030047,0x00000029,0x00000002,0x00040047,0x0000002b,0x00000022,
|
||||
0x00000000,0x00040047,0x0000002b,0x00000021,0x00000000,0x00050048,0x00000030,0x00000000,
|
||||
0x0000000b,0x00000000,0x00030047,0x00000030,0x00000002,0x00020013,0x00000002,0x00030021,
|
||||
0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040017,0x00000007,0x00000006,
|
||||
0x00000003,0x00040017,0x00000008,0x00000006,0x00000002,0x0004001e,0x00000009,0x00000007,
|
||||
0x00000008,0x00040020,0x0000000a,0x00000003,0x00000009,0x0004003b,0x0000000a,0x0000000b,
|
||||
0x00000003,0x00040015,0x0000000c,0x00000020,0x00000001,0x0004002b,0x0000000c,0x0000000d,
|
||||
0x00000000,0x00040020,0x0000000e,0x00000001,0x00000007,0x0004003b,0x0000000e,0x0000000f,
|
||||
0x00000001,0x00040020,0x00000011,0x00000003,0x00000007,0x0004002b,0x0000000c,0x00000013,
|
||||
0x00000001,0x00040020,0x00000014,0x00000001,0x00000008,0x0004003b,0x00000014,0x00000015,
|
||||
0x00000001,0x00040020,0x00000017,0x00000003,0x00000008,0x00040017,0x00000019,0x00000006,
|
||||
0x00000004,0x00040020,0x0000001a,0x00000007,0x00000019,0x0004003b,0x00000014,0x0000001c,
|
||||
0x00000001,0x00040015,0x0000001d,0x00000020,0x00000000,0x0004002b,0x0000001d,0x0000001e,
|
||||
0x00000000,0x00040020,0x0000001f,0x00000001,0x00000006,0x0004002b,0x0000001d,0x00000022,
|
||||
0x00000001,0x0004002b,0x00000006,0x00000025,0x00000000,0x0004002b,0x00000006,0x00000026,
|
||||
0x3f800000,0x00040018,0x00000028,0x00000019,0x00000004,0x0003001e,0x00000029,0x00000028,
|
||||
0x00040020,0x0000002a,0x00000002,0x00000029,0x0004003b,0x0000002a,0x0000002b,0x00000002,
|
||||
0x00040020,0x0000002c,0x00000002,0x00000028,0x0003001e,0x00000030,0x00000019,0x00040020,
|
||||
0x00000031,0x00000003,0x00000030,0x0004003b,0x00000031,0x00000032,0x00000003,0x00040020,
|
||||
0x00000033,0x00000007,0x00000006,0x00040020,0x00000039,0x00000003,0x00000019,0x00050036,
|
||||
0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x0000001a,
|
||||
0x0000001b,0x00000007,0x0004003d,0x00000007,0x00000010,0x0000000f,0x00050041,0x00000011,
|
||||
0x00000012,0x0000000b,0x0000000d,0x0003003e,0x00000012,0x00000010,0x0004003d,0x00000008,
|
||||
0x00000016,0x00000015,0x00050041,0x00000017,0x00000018,0x0000000b,0x00000013,0x0003003e,
|
||||
0x00000018,0x00000016,0x00050041,0x0000001f,0x00000020,0x0000001c,0x0000001e,0x0004003d,
|
||||
0x00000006,0x00000021,0x00000020,0x00050041,0x0000001f,0x00000023,0x0000001c,0x00000022,
|
||||
0x0004003d,0x00000006,0x00000024,0x00000023,0x00070050,0x00000019,0x00000027,0x00000021,
|
||||
0x00000024,0x00000025,0x00000026,0x00050041,0x0000002c,0x0000002d,0x0000002b,0x0000000d,
|
||||
0x0004003d,0x00000028,0x0000002e,0x0000002d,0x00050090,0x00000019,0x0000002f,0x00000027,
|
||||
0x0000002e,0x0003003e,0x0000001b,0x0000002f,0x00050041,0x00000033,0x00000034,0x0000001b,
|
||||
0x0000001e,0x0004003d,0x00000006,0x00000035,0x00000034,0x00050041,0x00000033,0x00000036,
|
||||
0x0000001b,0x00000022,0x0004003d,0x00000006,0x00000037,0x00000036,0x00070050,0x00000019,
|
||||
0x00000038,0x00000035,0x00000037,0x00000025,0x00000026,0x00050041,0x00000039,0x0000003a,
|
||||
0x00000032,0x0000000d,0x0003003e,0x0000003a,0x00000038,0x000100fd,0x00010038
|
||||
0x00040005,0x0000000f,0x6c6f4361,0x0000726f,0x00030005,0x00000015,0x00565561,0x00060005,
|
||||
0x0000001a,0x505f6c67,0x65567265,0x78657472,0x00000000,0x00060006,0x0000001a,0x00000000,
|
||||
0x505f6c67,0x7469736f,0x006e6f69,0x00030005,0x0000001c,0x00000000,0x00050005,0x0000001e,
|
||||
0x6f725075,0x7463656a,0x006e6f69,0x00040006,0x0000001e,0x00000000,0x0074616d,0x00040005,
|
||||
0x00000020,0x6f725075,0x0000006a,0x00040005,0x00000024,0x736f5061,0x00000000,0x00040047,
|
||||
0x0000000b,0x0000001e,0x00000000,0x00040047,0x0000000f,0x0000001e,0x00000001,0x00040047,
|
||||
0x00000015,0x0000001e,0x00000002,0x00050048,0x0000001a,0x00000000,0x0000000b,0x00000000,
|
||||
0x00030047,0x0000001a,0x00000002,0x00040048,0x0000001e,0x00000000,0x00000005,0x00050048,
|
||||
0x0000001e,0x00000000,0x00000023,0x00000000,0x00050048,0x0000001e,0x00000000,0x00000007,
|
||||
0x00000010,0x00030047,0x0000001e,0x00000002,0x00040047,0x00000020,0x00000022,0x00000000,
|
||||
0x00040047,0x00000020,0x00000021,0x00000000,0x00040047,0x00000024,0x0000001e,0x00000000,
|
||||
0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,
|
||||
0x00040017,0x00000007,0x00000006,0x00000003,0x00040017,0x00000008,0x00000006,0x00000002,
|
||||
0x0004001e,0x00000009,0x00000007,0x00000008,0x00040020,0x0000000a,0x00000003,0x00000009,
|
||||
0x0004003b,0x0000000a,0x0000000b,0x00000003,0x00040015,0x0000000c,0x00000020,0x00000001,
|
||||
0x0004002b,0x0000000c,0x0000000d,0x00000000,0x00040020,0x0000000e,0x00000001,0x00000007,
|
||||
0x0004003b,0x0000000e,0x0000000f,0x00000001,0x00040020,0x00000011,0x00000003,0x00000007,
|
||||
0x0004002b,0x0000000c,0x00000013,0x00000001,0x00040020,0x00000014,0x00000001,0x00000008,
|
||||
0x0004003b,0x00000014,0x00000015,0x00000001,0x00040020,0x00000017,0x00000003,0x00000008,
|
||||
0x00040017,0x00000019,0x00000006,0x00000004,0x0003001e,0x0000001a,0x00000019,0x00040020,
|
||||
0x0000001b,0x00000003,0x0000001a,0x0004003b,0x0000001b,0x0000001c,0x00000003,0x00040018,
|
||||
0x0000001d,0x00000019,0x00000004,0x0003001e,0x0000001e,0x0000001d,0x00040020,0x0000001f,
|
||||
0x00000002,0x0000001e,0x0004003b,0x0000001f,0x00000020,0x00000002,0x00040020,0x00000021,
|
||||
0x00000002,0x0000001d,0x0004003b,0x00000014,0x00000024,0x00000001,0x00040015,0x00000025,
|
||||
0x00000020,0x00000000,0x0004002b,0x00000025,0x00000026,0x00000000,0x00040020,0x00000027,
|
||||
0x00000001,0x00000006,0x0004002b,0x00000025,0x0000002a,0x00000001,0x0004002b,0x00000006,
|
||||
0x0000002d,0x00000000,0x0004002b,0x00000006,0x0000002e,0x3f800000,0x00040020,0x00000031,
|
||||
0x00000003,0x00000019,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,
|
||||
0x00000005,0x0004003d,0x00000007,0x00000010,0x0000000f,0x00050041,0x00000011,0x00000012,
|
||||
0x0000000b,0x0000000d,0x0003003e,0x00000012,0x00000010,0x0004003d,0x00000008,0x00000016,
|
||||
0x00000015,0x00050041,0x00000017,0x00000018,0x0000000b,0x00000013,0x0003003e,0x00000018,
|
||||
0x00000016,0x00050041,0x00000021,0x00000022,0x00000020,0x0000000d,0x0004003d,0x0000001d,
|
||||
0x00000023,0x00000022,0x00050041,0x00000027,0x00000028,0x00000024,0x00000026,0x0004003d,
|
||||
0x00000006,0x00000029,0x00000028,0x00050041,0x00000027,0x0000002b,0x00000024,0x0000002a,
|
||||
0x0004003d,0x00000006,0x0000002c,0x0000002b,0x00070050,0x00000019,0x0000002f,0x00000029,
|
||||
0x0000002c,0x0000002d,0x0000002e,0x00050091,0x00000019,0x00000030,0x00000023,0x0000002f,
|
||||
0x00050041,0x00000031,0x00000032,0x0000001c,0x0000000d,0x0003003e,0x00000032,0x00000030,
|
||||
0x000100fd,0x00010038
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -6,51 +6,95 @@
|
||||
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/03/31 15:14:50 by maldavid #+# #+# */
|
||||
/* Updated: 2023/03/31 20:30:38 by maldavid ### ########.fr */
|
||||
/* Updated: 2023/04/01 12:57:32 by maldavid ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#include <renderer/buffers/vk_ibo.h>
|
||||
#include <renderer/buffers/vk_vbo.h>
|
||||
#include <renderer/images/vk_image.h>
|
||||
#include <renderer/pixel_put.h>
|
||||
#include <renderer/renderer.h>
|
||||
#include <cstring>
|
||||
|
||||
namespace mlx
|
||||
{
|
||||
struct PixelPutPipeline::_Pimpl
|
||||
{
|
||||
Image image;
|
||||
C_VBO vbo;
|
||||
C_IBO ibo;
|
||||
Buffer buffer;
|
||||
DescriptorSet image_set;
|
||||
void* map = nullptr;
|
||||
uint32_t width = 0;
|
||||
uint32_t height = 0;
|
||||
};
|
||||
|
||||
PixelPutPipeline::PixelPutPipeline() : _impl(std::make_unique<_Pimpl>()) {}
|
||||
|
||||
void PixelPutPipeline::init(uint32_t width, uint32_t height, Renderer& renderer) noexcept
|
||||
{
|
||||
_image.create(width, height, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_TILING_OPTIMAL,
|
||||
_impl->image.create(width, height, VK_FORMAT_R8G8B8A8_UNORM, VK_IMAGE_TILING_OPTIMAL,
|
||||
VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT,
|
||||
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
|
||||
_image.createImageView(VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_ASPECT_COLOR_BIT);
|
||||
_image.createSampler();
|
||||
_buffer.create(Buffer::kind::dynamic, sizeof(uint32_t) * (width * height), VK_BUFFER_USAGE_TRANSFER_SRC_BIT);
|
||||
_image_set = renderer.getFragDescriptorSet().duplicate();
|
||||
_width = width;
|
||||
_height = height;
|
||||
_impl->image.createImageView(VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_ASPECT_COLOR_BIT);
|
||||
_impl->image.createSampler();
|
||||
_impl->buffer.create(Buffer::kind::dynamic, sizeof(uint32_t) * (width * height), VK_BUFFER_USAGE_TRANSFER_SRC_BIT);
|
||||
_impl->image_set = renderer.getFragDescriptorSet().duplicate();
|
||||
_impl->width = width;
|
||||
_impl->height = height;
|
||||
|
||||
std::vector<Vertex> vertexData = {
|
||||
{{0, 0}, {1.f, 1.f, 1.f}, {0.0f, 0.0f}},
|
||||
{{_impl->width, 0}, {1.f, 1.f, 1.f}, {1.0f, 0.0f}},
|
||||
{{_impl->width, _impl->height}, {1.f, 1.f, 1.f}, {1.0f, 1.0f}},
|
||||
{{0, _impl->height}, {1.f, 1.f, 1.0}, {0.0f, 1.0f}}
|
||||
};
|
||||
|
||||
std::vector<uint16_t> indexData = { 0, 1, 2, 2, 3, 0 };
|
||||
|
||||
_impl->vbo.create(sizeof(Vertex) * vertexData.size(), vertexData.data());
|
||||
_impl->ibo.create(sizeof(uint16_t) * indexData.size(), indexData.data());
|
||||
}
|
||||
|
||||
VkDescriptorSet& PixelPutPipeline::getDescriptorSet() noexcept
|
||||
{
|
||||
return _impl->image_set.get();
|
||||
}
|
||||
|
||||
void PixelPutPipeline::setPixel(uint32_t x, uint32_t y, int color) noexcept
|
||||
{
|
||||
if(x < 0 || y < 0 || x > _width || y > _height)
|
||||
if(x < 0 || y < 0 || x > _impl->width || y > _impl->height)
|
||||
return;
|
||||
if(!_buffer.isMapped())
|
||||
_buffer.mapMem(&_map);
|
||||
if(!_impl->buffer.isMapped())
|
||||
_impl->buffer.mapMem(&_impl->map);
|
||||
|
||||
unsigned char* mem = static_cast<unsigned char*>(_map) + y * _width + x * sizeof(uint32_t);
|
||||
unsigned char* mem = static_cast<unsigned char*>(_impl->map) + (y * _impl->width * sizeof(uint32_t)) + (x * sizeof(uint32_t));
|
||||
*reinterpret_cast<uint32_t*>(mem) = color;
|
||||
}
|
||||
|
||||
void PixelPutPipeline::present() noexcept
|
||||
{
|
||||
if(_buffer.isMapped())
|
||||
_buffer.unmapMem();
|
||||
_image.copyBuffer(_buffer);
|
||||
_image_set.writeDescriptor(0, _image.getImageView(), _image.getSampler());
|
||||
if(_impl->buffer.isMapped())
|
||||
_impl->buffer.unmapMem();
|
||||
_impl->image.copyBuffer(_impl->buffer);
|
||||
_impl->image_set.writeDescriptor(0, _impl->image.getImageView(), _impl->image.getSampler());
|
||||
}
|
||||
|
||||
void PixelPutPipeline::render(Renderer& renderer) noexcept
|
||||
{
|
||||
_impl->vbo.bind(renderer);
|
||||
_impl->ibo.bind(renderer);
|
||||
vkCmdDrawIndexed(renderer.getActiveCmdBuffer().get(), static_cast<uint32_t>(_impl->ibo.getSize() / sizeof(uint16_t)), 1, 0, 0, 0);
|
||||
}
|
||||
|
||||
void PixelPutPipeline::destroy() noexcept
|
||||
{
|
||||
_buffer.destroy();
|
||||
_image.destroy();
|
||||
_impl->vbo.destroy();
|
||||
_impl->ibo.destroy();
|
||||
_impl->buffer.destroy();
|
||||
_impl->image.destroy();
|
||||
}
|
||||
|
||||
PixelPutPipeline::~PixelPutPipeline() {}
|
||||
}
|
||||
|
||||
@@ -6,15 +6,13 @@
|
||||
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2023/03/31 13:18:50 by maldavid #+# #+# */
|
||||
/* Updated: 2023/03/31 20:30:25 by maldavid ### ########.fr */
|
||||
/* Updated: 2023/04/01 12:10:33 by maldavid ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
#ifndef __MLX_PIXEL_PUT__
|
||||
#define __MLX_PIXEL_PUT__
|
||||
|
||||
#include <renderer/buffers/vk_buffer.h>
|
||||
#include <renderer/images/vk_image.h>
|
||||
#include <renderer/descriptors/vk_descriptor_set.h>
|
||||
|
||||
namespace mlx
|
||||
@@ -22,25 +20,22 @@ namespace mlx
|
||||
class PixelPutPipeline
|
||||
{
|
||||
public:
|
||||
PixelPutPipeline() = default;
|
||||
PixelPutPipeline();
|
||||
|
||||
void init(uint32_t width, uint32_t height, class Renderer& renderer) noexcept;
|
||||
|
||||
void setPixel(uint32_t x, uint32_t y, int color) noexcept;
|
||||
void present() noexcept;
|
||||
inline VkDescriptorSet& getDescriptorSet() noexcept { return _image_set.get(); }
|
||||
void render(class Renderer& renderer) noexcept;
|
||||
VkDescriptorSet& getDescriptorSet() noexcept;
|
||||
|
||||
void destroy() noexcept;
|
||||
|
||||
~PixelPutPipeline() = default;
|
||||
~PixelPutPipeline();
|
||||
|
||||
private:
|
||||
Image _image;
|
||||
Buffer _buffer;
|
||||
DescriptorSet _image_set;
|
||||
void* _map = nullptr;
|
||||
uint32_t _width = 0;
|
||||
uint32_t _height = 0;
|
||||
struct _Pimpl;
|
||||
std::unique_ptr<_Pimpl> _impl;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user