working pixel put pipeline

This commit is contained in:
kbz_8
2023-04-01 13:03:21 +02:00
parent 90c1aaad4b
commit e9c3fb8046
7 changed files with 125 additions and 107 deletions

View File

@@ -6,7 +6,7 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */ /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/04 17:36:44 by maldavid #+# #+# */ /* 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->setWindow(this);
_renderer->init(); _renderer->init();
_renderer->getPixelPutPipeline().init(w, h, *_renderer); _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() bool MLX_Window::beginFrame()
@@ -68,21 +56,15 @@ namespace mlx
sets.push_back(_renderer->getPixelPutPipeline().getDescriptorSet()); sets.push_back(_renderer->getPixelPutPipeline().getDescriptorSet());
vkCmdBindDescriptorSets(cmd_buff, VK_PIPELINE_BIND_POINT_GRAPHICS, _renderer->getPipeline().getPipelineLayout(), 0, sets.size(), sets.data(), 0, nullptr); 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(); _renderer->endFrame();
} }
MLX_Window::~MLX_Window() MLX_Window::~MLX_Window()
{ {
_renderer->destroy(); _renderer->destroy();
_staging_buffer.destroy();
_vbo.destroy();
_ibo.destroy();
if(_win) if(_win)
SDL_DestroyWindow(_win); SDL_DestroyWindow(_win);
} }

View File

@@ -6,7 +6,7 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */ /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/04 21:53:12 by maldavid #+# #+# */ /* 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/renderer.h>
#include <renderer/images/vk_image.h> #include <renderer/images/vk_image.h>
#include <renderer/buffers/vk_buffer.h> #include <renderer/buffers/vk_buffer.h>
#include <renderer/buffers/vk_vbo.h>
#include <renderer/buffers/vk_ibo.h>
namespace mlx namespace mlx
{ {
@@ -40,8 +38,6 @@ namespace mlx
~MLX_Window(); ~MLX_Window();
private: private:
C_VBO _vbo;
C_IBO _ibo;
glm::mat4 _proj = glm::mat4(1.0); glm::mat4 _proj = glm::mat4(1.0);
std::unique_ptr<Renderer> _renderer; std::unique_ptr<Renderer> _renderer;
SDL_Window* _win = nullptr; SDL_Window* _win = nullptr;

View File

@@ -6,7 +6,7 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */ /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/12/18 21:27:38 by maldavid #+# #+# */ /* 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.Color = aColor;
Out.UV = aUV; Out.UV = aUV;
vec4 position = vec4(aPos.x, aPos.y, 0.0, 1.0) * uProj.mat; gl_Position = uProj.mat * vec4(aPos.x, aPos.y, 0.0, 1.0);
gl_Position = vec4(position.x, position.y, 0.0, 1.0);
} }
*/ */
const std::vector<uint32_t> vertex_shader = { 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, 0x00000001,0x4c534c47,0x6474732e,0x3035342e,0x00000000,0x0003000e,0x00000000,0x00000001,
0x000a000f,0x00000000,0x00000004,0x6e69616d,0x00000000,0x0000000b,0x0000000f,0x00000015, 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, 0x00000000,0x00030005,0x00000009,0x00000000,0x00050006,0x00000009,0x00000000,0x6f6c6f43,
0x00000072,0x00040006,0x00000009,0x00000001,0x00005655,0x00030005,0x0000000b,0x0074754f, 0x00000072,0x00040006,0x00000009,0x00000001,0x00005655,0x00030005,0x0000000b,0x0074754f,
0x00040005,0x0000000f,0x6c6f4361,0x0000726f,0x00030005,0x00000015,0x00565561,0x00050005, 0x00040005,0x0000000f,0x6c6f4361,0x0000726f,0x00030005,0x00000015,0x00565561,0x00060005,
0x0000001b,0x69736f70,0x6e6f6974,0x00000000,0x00040005,0x0000001c,0x736f5061,0x00000000, 0x0000001a,0x505f6c67,0x65567265,0x78657472,0x00000000,0x00060006,0x0000001a,0x00000000,
0x00050005,0x00000029,0x6f725075,0x7463656a,0x006e6f69,0x00040006,0x00000029,0x00000000, 0x505f6c67,0x7469736f,0x006e6f69,0x00030005,0x0000001c,0x00000000,0x00050005,0x0000001e,
0x0074616d,0x00040005,0x0000002b,0x6f725075,0x0000006a,0x00060005,0x00000030,0x505f6c67, 0x6f725075,0x7463656a,0x006e6f69,0x00040006,0x0000001e,0x00000000,0x0074616d,0x00040005,
0x65567265,0x78657472,0x00000000,0x00060006,0x00000030,0x00000000,0x505f6c67,0x7469736f, 0x00000020,0x6f725075,0x0000006a,0x00040005,0x00000024,0x736f5061,0x00000000,0x00040047,
0x006e6f69,0x00030005,0x00000032,0x00000000,0x00040047,0x0000000b,0x0000001e,0x00000000, 0x0000000b,0x0000001e,0x00000000,0x00040047,0x0000000f,0x0000001e,0x00000001,0x00040047,
0x00040047,0x0000000f,0x0000001e,0x00000001,0x00040047,0x00000015,0x0000001e,0x00000002, 0x00000015,0x0000001e,0x00000002,0x00050048,0x0000001a,0x00000000,0x0000000b,0x00000000,
0x00040047,0x0000001c,0x0000001e,0x00000000,0x00040048,0x00000029,0x00000000,0x00000005, 0x00030047,0x0000001a,0x00000002,0x00040048,0x0000001e,0x00000000,0x00000005,0x00050048,
0x00050048,0x00000029,0x00000000,0x00000023,0x00000000,0x00050048,0x00000029,0x00000000, 0x0000001e,0x00000000,0x00000023,0x00000000,0x00050048,0x0000001e,0x00000000,0x00000007,
0x00000007,0x00000010,0x00030047,0x00000029,0x00000002,0x00040047,0x0000002b,0x00000022, 0x00000010,0x00030047,0x0000001e,0x00000002,0x00040047,0x00000020,0x00000022,0x00000000,
0x00000000,0x00040047,0x0000002b,0x00000021,0x00000000,0x00050048,0x00000030,0x00000000, 0x00040047,0x00000020,0x00000021,0x00000000,0x00040047,0x00000024,0x0000001e,0x00000000,
0x0000000b,0x00000000,0x00030047,0x00000030,0x00000002,0x00020013,0x00000002,0x00030021, 0x00020013,0x00000002,0x00030021,0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,
0x00000003,0x00000002,0x00030016,0x00000006,0x00000020,0x00040017,0x00000007,0x00000006, 0x00040017,0x00000007,0x00000006,0x00000003,0x00040017,0x00000008,0x00000006,0x00000002,
0x00000003,0x00040017,0x00000008,0x00000006,0x00000002,0x0004001e,0x00000009,0x00000007, 0x0004001e,0x00000009,0x00000007,0x00000008,0x00040020,0x0000000a,0x00000003,0x00000009,
0x00000008,0x00040020,0x0000000a,0x00000003,0x00000009,0x0004003b,0x0000000a,0x0000000b, 0x0004003b,0x0000000a,0x0000000b,0x00000003,0x00040015,0x0000000c,0x00000020,0x00000001,
0x00000003,0x00040015,0x0000000c,0x00000020,0x00000001,0x0004002b,0x0000000c,0x0000000d, 0x0004002b,0x0000000c,0x0000000d,0x00000000,0x00040020,0x0000000e,0x00000001,0x00000007,
0x00000000,0x00040020,0x0000000e,0x00000001,0x00000007,0x0004003b,0x0000000e,0x0000000f, 0x0004003b,0x0000000e,0x0000000f,0x00000001,0x00040020,0x00000011,0x00000003,0x00000007,
0x00000001,0x00040020,0x00000011,0x00000003,0x00000007,0x0004002b,0x0000000c,0x00000013, 0x0004002b,0x0000000c,0x00000013,0x00000001,0x00040020,0x00000014,0x00000001,0x00000008,
0x00000001,0x00040020,0x00000014,0x00000001,0x00000008,0x0004003b,0x00000014,0x00000015, 0x0004003b,0x00000014,0x00000015,0x00000001,0x00040020,0x00000017,0x00000003,0x00000008,
0x00000001,0x00040020,0x00000017,0x00000003,0x00000008,0x00040017,0x00000019,0x00000006, 0x00040017,0x00000019,0x00000006,0x00000004,0x0003001e,0x0000001a,0x00000019,0x00040020,
0x00000004,0x00040020,0x0000001a,0x00000007,0x00000019,0x0004003b,0x00000014,0x0000001c, 0x0000001b,0x00000003,0x0000001a,0x0004003b,0x0000001b,0x0000001c,0x00000003,0x00040018,
0x00000001,0x00040015,0x0000001d,0x00000020,0x00000000,0x0004002b,0x0000001d,0x0000001e, 0x0000001d,0x00000019,0x00000004,0x0003001e,0x0000001e,0x0000001d,0x00040020,0x0000001f,
0x00000000,0x00040020,0x0000001f,0x00000001,0x00000006,0x0004002b,0x0000001d,0x00000022, 0x00000002,0x0000001e,0x0004003b,0x0000001f,0x00000020,0x00000002,0x00040020,0x00000021,
0x00000001,0x0004002b,0x00000006,0x00000025,0x00000000,0x0004002b,0x00000006,0x00000026, 0x00000002,0x0000001d,0x0004003b,0x00000014,0x00000024,0x00000001,0x00040015,0x00000025,
0x3f800000,0x00040018,0x00000028,0x00000019,0x00000004,0x0003001e,0x00000029,0x00000028, 0x00000020,0x00000000,0x0004002b,0x00000025,0x00000026,0x00000000,0x00040020,0x00000027,
0x00040020,0x0000002a,0x00000002,0x00000029,0x0004003b,0x0000002a,0x0000002b,0x00000002, 0x00000001,0x00000006,0x0004002b,0x00000025,0x0000002a,0x00000001,0x0004002b,0x00000006,
0x00040020,0x0000002c,0x00000002,0x00000028,0x0003001e,0x00000030,0x00000019,0x00040020, 0x0000002d,0x00000000,0x0004002b,0x00000006,0x0000002e,0x3f800000,0x00040020,0x00000031,
0x00000031,0x00000003,0x00000030,0x0004003b,0x00000031,0x00000032,0x00000003,0x00040020, 0x00000003,0x00000019,0x00050036,0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,
0x00000033,0x00000007,0x00000006,0x00040020,0x00000039,0x00000003,0x00000019,0x00050036, 0x00000005,0x0004003d,0x00000007,0x00000010,0x0000000f,0x00050041,0x00000011,0x00000012,
0x00000002,0x00000004,0x00000000,0x00000003,0x000200f8,0x00000005,0x0004003b,0x0000001a, 0x0000000b,0x0000000d,0x0003003e,0x00000012,0x00000010,0x0004003d,0x00000008,0x00000016,
0x0000001b,0x00000007,0x0004003d,0x00000007,0x00000010,0x0000000f,0x00050041,0x00000011, 0x00000015,0x00050041,0x00000017,0x00000018,0x0000000b,0x00000013,0x0003003e,0x00000018,
0x00000012,0x0000000b,0x0000000d,0x0003003e,0x00000012,0x00000010,0x0004003d,0x00000008, 0x00000016,0x00050041,0x00000021,0x00000022,0x00000020,0x0000000d,0x0004003d,0x0000001d,
0x00000016,0x00000015,0x00050041,0x00000017,0x00000018,0x0000000b,0x00000013,0x0003003e, 0x00000023,0x00000022,0x00050041,0x00000027,0x00000028,0x00000024,0x00000026,0x0004003d,
0x00000018,0x00000016,0x00050041,0x0000001f,0x00000020,0x0000001c,0x0000001e,0x0004003d, 0x00000006,0x00000029,0x00000028,0x00050041,0x00000027,0x0000002b,0x00000024,0x0000002a,
0x00000006,0x00000021,0x00000020,0x00050041,0x0000001f,0x00000023,0x0000001c,0x00000022, 0x0004003d,0x00000006,0x0000002c,0x0000002b,0x00070050,0x00000019,0x0000002f,0x00000029,
0x0004003d,0x00000006,0x00000024,0x00000023,0x00070050,0x00000019,0x00000027,0x00000021, 0x0000002c,0x0000002d,0x0000002e,0x00050091,0x00000019,0x00000030,0x00000023,0x0000002f,
0x00000024,0x00000025,0x00000026,0x00050041,0x0000002c,0x0000002d,0x0000002b,0x0000000d, 0x00050041,0x00000031,0x00000032,0x0000001c,0x0000000d,0x0003003e,0x00000032,0x00000030,
0x0004003d,0x00000028,0x0000002e,0x0000002d,0x00050090,0x00000019,0x0000002f,0x00000027, 0x000100fd,0x00010038
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
}; };
/** /**

View File

@@ -6,51 +6,95 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */ /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2023/03/31 15:14:50 by maldavid #+# #+# */ /* 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/pixel_put.h>
#include <renderer/renderer.h>
#include <cstring> #include <cstring>
namespace mlx 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 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_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT,
VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT); VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT);
_image.createImageView(VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_ASPECT_COLOR_BIT); _impl->image.createImageView(VK_IMAGE_VIEW_TYPE_2D, VK_IMAGE_ASPECT_COLOR_BIT);
_image.createSampler(); _impl->image.createSampler();
_buffer.create(Buffer::kind::dynamic, sizeof(uint32_t) * (width * height), VK_BUFFER_USAGE_TRANSFER_SRC_BIT); _impl->buffer.create(Buffer::kind::dynamic, sizeof(uint32_t) * (width * height), VK_BUFFER_USAGE_TRANSFER_SRC_BIT);
_image_set = renderer.getFragDescriptorSet().duplicate(); _impl->image_set = renderer.getFragDescriptorSet().duplicate();
_width = width; _impl->width = width;
_height = height; _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 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; return;
if(!_buffer.isMapped()) if(!_impl->buffer.isMapped())
_buffer.mapMem(&_map); _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; *reinterpret_cast<uint32_t*>(mem) = color;
} }
void PixelPutPipeline::present() noexcept void PixelPutPipeline::present() noexcept
{ {
if(_buffer.isMapped()) if(_impl->buffer.isMapped())
_buffer.unmapMem(); _impl->buffer.unmapMem();
_image.copyBuffer(_buffer); _impl->image.copyBuffer(_impl->buffer);
_image_set.writeDescriptor(0, _image.getImageView(), _image.getSampler()); _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 void PixelPutPipeline::destroy() noexcept
{ {
_buffer.destroy(); _impl->vbo.destroy();
_image.destroy(); _impl->ibo.destroy();
_impl->buffer.destroy();
_impl->image.destroy();
} }
PixelPutPipeline::~PixelPutPipeline() {}
} }

View File

@@ -6,15 +6,13 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */ /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2023/03/31 13:18:50 by maldavid #+# #+# */ /* 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__ #ifndef __MLX_PIXEL_PUT__
#define __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> #include <renderer/descriptors/vk_descriptor_set.h>
namespace mlx namespace mlx
@@ -22,25 +20,22 @@ namespace mlx
class PixelPutPipeline class PixelPutPipeline
{ {
public: public:
PixelPutPipeline() = default; PixelPutPipeline();
void init(uint32_t width, uint32_t height, class Renderer& renderer) noexcept; void init(uint32_t width, uint32_t height, class Renderer& renderer) noexcept;
void setPixel(uint32_t x, uint32_t y, int color) noexcept; void setPixel(uint32_t x, uint32_t y, int color) noexcept;
void present() noexcept; void present() noexcept;
inline VkDescriptorSet& getDescriptorSet() noexcept { return _image_set.get(); } void render(class Renderer& renderer) noexcept;
VkDescriptorSet& getDescriptorSet() noexcept;
void destroy() noexcept; void destroy() noexcept;
~PixelPutPipeline() = default; ~PixelPutPipeline();
private: private:
Image _image; struct _Pimpl;
Buffer _buffer; std::unique_ptr<_Pimpl> _impl;
DescriptorSet _image_set;
void* _map = nullptr;
uint32_t _width = 0;
uint32_t _height = 0;
}; };
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@@ -6,7 +6,7 @@
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */ /* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2022/10/04 17:55:21 by maldavid #+# #+# */ /* Created: 2022/10/04 17:55:21 by maldavid #+# #+# */
/* Updated: 2023/03/31 20:26:59 by maldavid ### ########.fr */ /* Updated: 2023/04/01 13:00:56 by maldavid ### ########.fr */
/* */ /* */
/* ************************************************************************** */ /* ************************************************************************** */
@@ -22,8 +22,15 @@ typedef struct
int update(t_mlx *mlx) int update(t_mlx *mlx)
{ {
static int i = 0; static int i = 0;
int j;
mlx_pixel_put(mlx->mlx, mlx->win, 100, 0, 0xFFFFFFFF); j = 0;
while (j < 400)
{
mlx_pixel_put(mlx->mlx, mlx->win, j, j, 0xFFFFFFFF);
mlx_pixel_put(mlx->mlx, mlx->win, 399 - j, j, 0xFFFFFFFF);
j++;
}
i++; i++;
if (i > 10000) if (i > 10000)
mlx_loop_end(mlx->mlx); mlx_loop_end(mlx->mlx);