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 void create() override;
21 vk::CommandBuffer commandBuffer()
22 {
23 return m_commandBuffer;
24 }
25 void reset() override
26 {
27 m_commandBuffer.reset();
28 }
29 void begin() override
30 {
31 vk::CommandBufferBeginInfo beginInfo{};
32 m_commandBuffer.begin(beginInfo);
33 }
34 void nextPass() override;
35 void viewport(Vec2 lt, Vec2 rb) override
36 {
37 vk::Viewport viewport{};
38 viewport.x = static_cast<float>(lt.x);
39 viewport.y = static_cast<float>(rb.y);
40 viewport.width = static_cast<float>(rb.x - lt.x);
41 viewport.height = -static_cast<float>(rb.y - lt.y);
42 viewport.minDepth = 0.0f;
43 viewport.maxDepth = 1.0f;
44 m_commandBuffer.setViewport(0,1, &viewport);
45 }
46 void scissor(Vec2 lt, Vec2 rb) override;
47 void bindPipieline(RasterizationPipeline* pipeline) override;
48 void draw(size_t vertexBegin, size_t instanceBegin, size_t vertexSize, size_t instanceSize) override
49 {
50 m_commandBuffer.draw(static_cast<uint32_t>(vertexSize),static_cast<uint32_t>(instanceSize) ,static_cast<uint32_t>(vertexBegin), static_cast<uint32_t>(instanceBegin));
51 }
52 void end() override
53 {
54 m_commandBuffer.end();
55 }
56 void submit() override;
57 vk::CommandBuffer commandBuffer() const
58 {
59 return m_commandBuffer;
60 }
61 void drawIndex(size_t indexBegin, size_t instanceBegin, size_t indexCount, size_t instanceCount, size_t firstVertex) override
62 {
63 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));
64 }
65 void barrier(FCT::Image* image, ImageLayout oldLayout, ImageLayout newLayout, PipelineStages srcStage, PipelineStages dstStage, AccessFlags srcAccess, AccessFlags dstAccess, ImageAspects aspectMask) override;
66 protected:
68 vk::CommandBufferAllocateInfo m_allocateInfo;
69 //vk::CommandBuffer> m_commandBuffers;
70 vk::CommandBuffer m_commandBuffer;
71 };
72 }
73}
74
75
76
77#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:10
float y
定义 Vec.h:10