FCT
载入中...
搜索中...
未找到
VK_CommandBuffer.h
浏览该文件的文档.
1//
2// Created by Administrator on 2025/3/31.
3//
4#include "./CommandBuffer.h"
5#include "VK_CommandPool.h"
6#include "AccessFlags.h"
7#include "PipelineStage.h"
8#include "ImageAspect.h"
9#ifndef VK_COMMANDBUFFER_H
10#define VK_COMMANDBUFFER_H
11
12namespace FCT
13{
14 namespace RHI
15 {
18 public:
20 ~VK_CommandBuffer() override;
21 void create() override;
22 vk::CommandBuffer commandBuffer()
23 {
24 return m_commandBuffer;
25 }
26 void reset() override
27 {
28 m_commandBuffer.reset();
29 }
30 void begin() override
31 {
32 vk::CommandBufferBeginInfo beginInfo{};
33 m_commandBuffer.begin(beginInfo);
34 }
35 void nextPass() override;
36 void viewport(Vec2 lt, Vec2 rb) override
37 {
38 vk::Viewport viewport{};
39 viewport.x = static_cast<float>(lt.x);
40 viewport.y = static_cast<float>(rb.y);
41 viewport.width = static_cast<float>(rb.x - lt.x);
42 viewport.height = -static_cast<float>(rb.y - lt.y);
43 viewport.minDepth = 0.0f;
44 viewport.maxDepth = 1.0f;
45 m_commandBuffer.setViewport(0,1, &viewport);
46 }
47 void scissor(Vec2 lt, Vec2 rb) override;
48 void bindPipieline(RasterizationPipeline* pipeline) override;
49 void draw(size_t vertexBegin, size_t instanceBegin, size_t vertexSize, size_t instanceSize) override
50 {
51 m_commandBuffer.draw(static_cast<uint32_t>(vertexSize),static_cast<uint32_t>(instanceSize) ,static_cast<uint32_t>(vertexBegin), static_cast<uint32_t>(instanceBegin));
52 }
53 void end() override
54 {
55 m_commandBuffer.end();
56 }
57 void submit() override;
58 vk::CommandBuffer commandBuffer() const
59 {
60 return m_commandBuffer;
61 }
62 void drawIndex(size_t indexBegin, size_t instanceBegin, size_t indexCount, size_t instanceCount, size_t firstVertex) override
63 {
64 m_commandBuffer.drawIndexed(static_cast<uint32_t>(indexCount),static_cast<uint32_t>(instanceCount), static_cast<uint32_t>(indexBegin), static_cast<int32_t>(firstVertex), static_cast<uint32_t>(instanceBegin));
65 }
66 void barrier(FCT::Image* image, ImageLayout oldLayout, ImageLayout newLayout, PipelineStages srcStage, PipelineStages dstStage, AccessFlags srcAccess, AccessFlags dstAccess, ImageAspects aspectMask) override;
67 protected:
69 vk::CommandBufferAllocateInfo m_allocateInfo;
70 //vk::CommandBuffer> m_commandBuffers;
71 vk::CommandBuffer m_commandBuffer;
72 };
73 }
74}
75
76
77
78#endif //VK_COMMANDBUFFER_H
void barrier(FCT::Image *image, ImageLayout oldLayout, ImageLayout newLayout, PipelineStages srcStage, PipelineStages dstStage, AccessFlags srcAccess, AccessFlags dstAccess, ImageAspects aspectMask) override
void draw(size_t vertexBegin, size_t instanceBegin, size_t vertexSize, size_t instanceSize) override
void scissor(Vec2 lt, Vec2 rb) override
vk::CommandBuffer commandBuffer() const
void drawIndex(size_t indexBegin, size_t instanceBegin, size_t indexCount, size_t instanceCount, size_t firstVertex) override
void viewport(Vec2 lt, Vec2 rb) override
void bindPipieline(RasterizationPipeline *pipeline) override
VK_CommandBuffer(VK_CommandPool *pool)
vk::CommandBufferAllocateInfo m_allocateInfo
float x
定义 Vec.h:11
float y
定义 Vec.h:11