dl
dl::VK类 参考

vulkan底层 更多...

#include <dl_vk.h>

struct  Canvas
 
struct  DrawCall
 
struct  DrawCallList
 
struct  DrawCallZ
 
struct  Primitive
 
struct  PushConstantCSM
 
struct  PushConstantData
 
struct  RenderParam
 
struct  UbCSM
 
struct  UbObject
 
struct  UboBone
 
struct  VertexBufferGfx
 
struct  VK2D
 
struct  VKGfx
 
struct  VKRenderTarget
 

Public 类型

using Viewport = Array<float, 4>
 

Public 成员函数

 VK (GLFWwindow *window)
 
VkShaderModule CreateShaderModule (Buffer &buf)
 创建shader模块
 
void Update ()
 一帧逻辑(无需等待上帧完成的操作)
 
void Render (GLFWwindow *window)
 绘制一帧
 
void RenderEnd ()
 帧尾清理工作
 
void SetFrameBufferResize ()
 设置帧缓冲大小发生变化
 
void PopulateDebugMessengerCreateInfo (VkDebugUtilsMessengerCreateInfoEXT &createInfo)
 填充调试信使结构
 
uint32_t FindMemoryType (uint32_t typeFilter, VkMemoryPropertyFlags properties)
 查找内存类型
 
bool CreateBuffer (VkDeviceSize size, VkBufferUsageFlags usage, VkMemoryPropertyFlags properties, VkBuffer &buffer, VkDeviceMemory &bufferMemory)
 创建缓冲区
 
void CopyBuffer (VkBuffer srcBuffer, VkBuffer dstBuffer, VkDeviceSize size)
 复制缓冲区
 
void CopyBufferToImage (VkBuffer buffer, VkImage image, uint32_t width, uint32_t height, uint32_t mip_level)
 复制缓冲区 到 图像
 
void CopyBufferToImageMulti (const std::array< VkBuffer, NUM_MIPMAP_2D > &vec_buffer, VkImage image, const std::array< Size, NUM_MIPMAP_2D > &vec_size)
 复制缓冲区 到 图像(mipmap)
 
template<typename T>
void CreateVertexBufferGPU (const std::vector< T > &vertices, VkBuffer &vertexBuffer, VkDeviceMemory &vertexBufferMemory)
 创建顶点缓冲(CPU不可访问,用于模型)
 
template<typename T>
bool CreateVertexBufferCPU (size_t vertex_num, VkBuffer &vertexBuffer, VkDeviceMemory &vertexBufferMemory, VkDeviceSize &bufferSize)
 创建顶点缓冲(CPU可访问,用于2d管线)
 
template<typename T>
void CreateIndexBuffer (const std::vector< T > &indices, VkBuffer &indexBuffer, VkDeviceMemory &indexBufferMemory)
 创建索引缓冲(CPU不可访问)
 
void CreateImage (uint32_t w, uint32_t h, uint32_t mip_level, VkSampleCountFlagBits numSamples, VkFormat format, VkImageTiling tiling, VkImageUsageFlags usage, VkMemoryPropertyFlags properties, VkImage &image, VkDeviceMemory &imageMemory, uint32_t layers=1)
 创建图像
 
VkImageView CreateImageView (VkImage image, VkFormat format, VkImageAspectFlags aspectFlags, uint32_t mip_level)
 创建图像视图
 
VkCommandBuffer BeginSingleTimeCommands ()
 开始命令记录
 
void EndSingleTimeCommands (VkCommandBuffer commandBuffer)
 结束命令记录
 
void TransitionImageLayout (VkImage image, VkFormat format, VkImageLayout oldLayout, VkImageLayout newLayout, uint32_t mip_level)
 转换图像布局
 
VkFormat FindSupportedFormat (const std::vector< VkFormat > &candidates, VkImageTiling tiling, VkFormatFeatureFlags features)
 查找支持的格式
 
VkFormat FindDepthFormat ()
 查找支持的深度测试
 
bool HasStencilComponent (VkFormat format)
 格式含有模板通道
 
VkDevice GetDevice ()
 
size_t CreateMaterial (Material &m)
 创建一个材质(检查重复)
 
size_t CreatePrimitive (ModelMaterial &m)
 创建一个图元(材质)
 
ModelCreateModel (ModelObject *object)
 创建模型 ModelObject -> Model
 
void RenderModel (VkCommandBuffer command_buffer, Model *model, size_t shadow)
 绘制模型
 
void DeleteModel (Model *model)
 删除模型
 
size_t GetPushConstantNext ()
 返回 下一个可用推送常量
 
PushConstantDataGetPushConstant (size_t id)
 返回 推送常量
 
void UpdateUboBone (size_t id, std::vector< Matrix4 > &trans)
 更新骨骼ubo(实例id)
 
size_t GetUboBoneFree ()
 返回可用蒙皮id(注意设置不可用)
 
void SetUboBoneFree (size_t id)
 设置蒙皮id可用
 
void SetUboBoneUse (size_t id)
 设置蒙皮id占用(描述符创建时就已经映射)
 
void SetDebugView (DebugView3D type)
 
DebugView3D GetDebugView ()
 
size_t CreateTextureReal (Image *image, bool srgb, bool delete_image)
 真正的创建一个纹理,失败返回0
 
size_t CreateTexture (std::string_view path_name, bool srgb=true)
 创建Texture
 
void CreateCanvas (size_t id, Texture tex, std::string_view path_tex_full)
 创建Canvas(2d管线资源)
 
void CreateCanvasImage (size_t tex_id, const std::array< Image *, NUM_MIPMAP_2D > &vec_image)
 
void CreateCanvasImageKtx (size_t tex_id, std::string_view path_name, std::string_view path_tex_full)
 
void CreateCanvasRenderTarget (size_t rt_id, VKRenderTarget &rt)
 
void UpdateCanvasRenderTarget (size_t rt_id, VKRenderTarget &rt)
 
void UpdateCanvasDescriptor (Canvas *canvas)
 
CanvasGetCanvas (size_t id)
 
CanvasGetCanvasByTexture (size_t tex_id)
 
CanvasGetCanvasByRenderTarget (size_t rt_id)
 
size_t GetCanvasSize ()
 
Texture CreateTexture2D (const std::array< Image *, NUM_MIPMAP_2D > &vec_image)
 真正的创建一个2d管线纹理
 
void UpdateTexture2D (Texture tex, const PointU &xy, Image *image, const RectU &rect)
 更新纹理区域(自动生成mipmap)
 
void ScreenShot (std::string_view path_name)
 
void ExportTexture (Texture tex, std::string_view path_name)
 
void ExportTextureCanvas (std::string_view path)
 
void GenerateMipmaps (VkImage image, VkFormat imageFormat, int32_t texWidth, int32_t texHeight, uint32_t mipLevels)
 生成mipmap
 
VkSampleCountFlagBits GetMaxUsableSampleCount ()
 最大msaa采样数
 
size_t LoadSkybox (std::string_view path)
 加载天空盒
 
void SetSkybox (size_t i)
 设置当前天空盒
 
bool CreateRenderTargetReal (size_t i, VKRenderTarget &rt)
 
size_t CreateRenderTarget ()
 
const RenderInfo2DGetRenderInfo2D ()
 返回绘制信息
 
const RenderInfo3DGetRenderInfo3D ()
 
CameraGetCamera ()
 返回当前相机
 
void Release ()
 释放操作起始
 
 ~VK ()
 
void _rebuild_swap_chain (GLFWwindow *window)
 
void _render_light (const LightDir &l)
 
void _render_light (const LightDot &l)
 
void _render_light (const LightSpot &l)
 
uint32_t GetCurrentFrame ()
 
void GfxPushDot (const VertexGfx &v)
 
void GfxPushLine (const VertexGfx &v0, const VertexGfx &v1)
 
void GfxPushTriangle (const VertexGfx &v0, const VertexGfx &v1, const VertexGfx &v2)
 
void GfxPushDot2D (const VertexGfx &v)
 
void GfxPushLine2D (const VertexGfx &v0, const VertexGfx &v1)
 
void GfxPushTriangle2D (const VertexGfx &v0, const VertexGfx &v1, const VertexGfx &v2)
 
CoorGetRootCoor (size_t index)
 
size_t GetMulModelSize ()
 
std::vector< Model * > & GetMulModel (size_t i)
 
void AddMulModel (std::vector< Model * > &vec)
 

静态 Public 成员函数

static VKAPI_ATTR VkBool32 VKAPI_CALL CallbackDebug (VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageType, const VkDebugUtilsMessengerCallbackDataEXT *pCallbackData, void *pUserData)
 调试回调函数
 
static VkResult CreateDebugUtilsMessengerEXT (VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT *pCreateInfo, const VkAllocationCallbacks *pAllocator, VkDebugUtilsMessengerEXT *pDebugMessenger)
 验证层代理函数
 
static void DestroyDebugUtilsMessengerEXT (VkInstance instance, VkDebugUtilsMessengerEXT debugMessenger, const VkAllocationCallbacks *pAllocator)
 验证层代理函数
 

Public 属性

struct dl::VK::RenderParam _param
 

详细描述

vulkan底层

在文件 dl_vk.h190 行定义.

成员类型定义说明

◆ Viewport

using dl::VK::Viewport = Array<float, 4>

在文件 dl_vk.h338 行定义.

构造及析构函数说明

◆ VK()

dl::VK::VK ( GLFWwindow * window)
inline

在文件 dl_vk.h534 行定义.

◆ ~VK()

dl::VK::~VK ( )

成员函数说明

◆ _rebuild_swap_chain()

void dl::VK::_rebuild_swap_chain ( GLFWwindow * window)

◆ _render_light() [1/3]

void dl::VK::_render_light ( const LightDir & l)
inline

在文件 dl_vk.h1214 行定义.

◆ _render_light() [2/3]

void dl::VK::_render_light ( const LightDot & l)
inline

在文件 dl_vk.h1218 行定义.

◆ _render_light() [3/3]

void dl::VK::_render_light ( const LightSpot & l)
inline

在文件 dl_vk.h1222 行定义.

◆ AddMulModel()

void dl::VK::AddMulModel ( std::vector< Model * > & vec)
inline

在文件 dl_vk.h1359 行定义.

◆ BeginSingleTimeCommands()

VkCommandBuffer dl::VK::BeginSingleTimeCommands ( )

开始命令记录

◆ CallbackDebug()

static VKAPI_ATTR VkBool32 VKAPI_CALL dl::VK::CallbackDebug ( VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
VkDebugUtilsMessageTypeFlagsEXT messageType,
const VkDebugUtilsMessengerCallbackDataEXT * pCallbackData,
void * pUserData )
inlinestatic

调试回调函数

在文件 dl_vk.h583 行定义.

◆ CopyBuffer()

void dl::VK::CopyBuffer ( VkBuffer srcBuffer,
VkBuffer dstBuffer,
VkDeviceSize size )

复制缓冲区

◆ CopyBufferToImage()

void dl::VK::CopyBufferToImage ( VkBuffer buffer,
VkImage image,
uint32_t width,
uint32_t height,
uint32_t mip_level )

复制缓冲区 到 图像

◆ CopyBufferToImageMulti()

void dl::VK::CopyBufferToImageMulti ( const std::array< VkBuffer, NUM_MIPMAP_2D > & vec_buffer,
VkImage image,
const std::array< Size, NUM_MIPMAP_2D > & vec_size )

复制缓冲区 到 图像(mipmap)

◆ CreateBuffer()

bool dl::VK::CreateBuffer ( VkDeviceSize size,
VkBufferUsageFlags usage,
VkMemoryPropertyFlags properties,
VkBuffer & buffer,
VkDeviceMemory & bufferMemory )

创建缓冲区

◆ CreateCanvas()

void dl::VK::CreateCanvas ( size_t id,
Texture tex,
std::string_view path_tex_full )

创建Canvas(2d管线资源)

◆ CreateCanvasImage()

void dl::VK::CreateCanvasImage ( size_t tex_id,
const std::array< Image *, NUM_MIPMAP_2D > & vec_image )

◆ CreateCanvasImageKtx()

void dl::VK::CreateCanvasImageKtx ( size_t tex_id,
std::string_view path_name,
std::string_view path_tex_full )

◆ CreateCanvasRenderTarget()

void dl::VK::CreateCanvasRenderTarget ( size_t rt_id,
VKRenderTarget & rt )

◆ CreateDebugUtilsMessengerEXT()

static VkResult dl::VK::CreateDebugUtilsMessengerEXT ( VkInstance instance,
const VkDebugUtilsMessengerCreateInfoEXT * pCreateInfo,
const VkAllocationCallbacks * pAllocator,
VkDebugUtilsMessengerEXT * pDebugMessenger )
inlinestatic

验证层代理函数

在文件 dl_vk.h597 行定义.

◆ CreateImage()

void dl::VK::CreateImage ( uint32_t w,
uint32_t h,
uint32_t mip_level,
VkSampleCountFlagBits numSamples,
VkFormat format,
VkImageTiling tiling,
VkImageUsageFlags usage,
VkMemoryPropertyFlags properties,
VkImage & image,
VkDeviceMemory & imageMemory,
uint32_t layers = 1 )

创建图像

◆ CreateImageView()

VkImageView dl::VK::CreateImageView ( VkImage image,
VkFormat format,
VkImageAspectFlags aspectFlags,
uint32_t mip_level )

创建图像视图

◆ CreateIndexBuffer()

template<typename T>
void dl::VK::CreateIndexBuffer ( const std::vector< T > & indices,
VkBuffer & indexBuffer,
VkDeviceMemory & indexBufferMemory )
inline

创建索引缓冲(CPU不可访问)

注解
索引可以使用32位也可以用16位
小于65535个顶点,使用16位

在文件 dl_vk.h701 行定义.

◆ CreateMaterial()

size_t dl::VK::CreateMaterial ( Material & m)
inline

创建一个材质(检查重复)

在文件 dl_vk.h769 行定义.

◆ CreateModel()

Model * dl::VK::CreateModel ( ModelObject * object)

创建模型 ModelObject -> Model

◆ CreatePrimitive()

size_t dl::VK::CreatePrimitive ( ModelMaterial & m)

创建一个图元(材质)

◆ CreateRenderTarget()

size_t dl::VK::CreateRenderTarget ( )

◆ CreateRenderTargetReal()

bool dl::VK::CreateRenderTargetReal ( size_t i,
VKRenderTarget & rt )

◆ CreateShaderModule()

VkShaderModule dl::VK::CreateShaderModule ( Buffer & buf)

创建shader模块

◆ CreateTexture()

size_t dl::VK::CreateTexture ( std::string_view path_name,
bool srgb = true )

创建Texture

注解
如果图像已创建,则直接返回id。失败返回0
空路径返回0

◆ CreateTexture2D()

Texture dl::VK::CreateTexture2D ( const std::array< Image *, NUM_MIPMAP_2D > & vec_image)

真正的创建一个2d管线纹理

◆ CreateTextureReal()

size_t dl::VK::CreateTextureReal ( Image * image,
bool srgb,
bool delete_image )

真正的创建一个纹理,失败返回0

◆ CreateVertexBufferCPU()

template<typename T>
bool dl::VK::CreateVertexBufferCPU ( size_t vertex_num,
VkBuffer & vertexBuffer,
VkDeviceMemory & vertexBufferMemory,
VkDeviceSize & bufferSize )
inline

创建顶点缓冲(CPU可访问,用于2d管线)

在文件 dl_vk.h680 行定义.

◆ CreateVertexBufferGPU()

template<typename T>
void dl::VK::CreateVertexBufferGPU ( const std::vector< T > & vertices,
VkBuffer & vertexBuffer,
VkDeviceMemory & vertexBufferMemory )
inline

创建顶点缓冲(CPU不可访问,用于模型)

在文件 dl_vk.h649 行定义.

◆ DeleteModel()

void dl::VK::DeleteModel ( Model * model)
inline

删除模型

在文件 dl_vk.h800 行定义.

◆ DestroyDebugUtilsMessengerEXT()

static void dl::VK::DestroyDebugUtilsMessengerEXT ( VkInstance instance,
VkDebugUtilsMessengerEXT debugMessenger,
const VkAllocationCallbacks * pAllocator )
inlinestatic

验证层代理函数

在文件 dl_vk.h609 行定义.

◆ EndSingleTimeCommands()

void dl::VK::EndSingleTimeCommands ( VkCommandBuffer commandBuffer)

结束命令记录

◆ ExportTexture()

void dl::VK::ExportTexture ( Texture tex,
std::string_view path_name )

◆ ExportTextureCanvas()

void dl::VK::ExportTextureCanvas ( std::string_view path)

◆ FindDepthFormat()

VkFormat dl::VK::FindDepthFormat ( )

查找支持的深度测试

◆ FindMemoryType()

uint32_t dl::VK::FindMemoryType ( uint32_t typeFilter,
VkMemoryPropertyFlags properties )

查找内存类型

◆ FindSupportedFormat()

VkFormat dl::VK::FindSupportedFormat ( const std::vector< VkFormat > & candidates,
VkImageTiling tiling,
VkFormatFeatureFlags features )

查找支持的格式

◆ GenerateMipmaps()

void dl::VK::GenerateMipmaps ( VkImage image,
VkFormat imageFormat,
int32_t texWidth,
int32_t texHeight,
uint32_t mipLevels )

生成mipmap

◆ GetCamera()

Camera * dl::VK::GetCamera ( )
inline

返回当前相机

在文件 dl_vk.h951 行定义.

◆ GetCanvas()

Canvas * dl::VK::GetCanvas ( size_t id)

◆ GetCanvasByRenderTarget()

Canvas * dl::VK::GetCanvasByRenderTarget ( size_t rt_id)

◆ GetCanvasByTexture()

Canvas * dl::VK::GetCanvasByTexture ( size_t tex_id)

◆ GetCanvasSize()

size_t dl::VK::GetCanvasSize ( )
inline

在文件 dl_vk.h902 行定义.

◆ GetCurrentFrame()

uint32_t dl::VK::GetCurrentFrame ( )
inline

在文件 dl_vk.h1304 行定义.

◆ GetDebugView()

DebugView3D dl::VK::GetDebugView ( )
inline

在文件 dl_vk.h870 行定义.

◆ GetDevice()

VkDevice dl::VK::GetDevice ( )
inline

在文件 dl_vk.h766 行定义.

◆ GetMaxUsableSampleCount()

VkSampleCountFlagBits dl::VK::GetMaxUsableSampleCount ( )

最大msaa采样数

◆ GetMulModel()

std::vector< Model * > & dl::VK::GetMulModel ( size_t i)
inline

在文件 dl_vk.h1355 行定义.

◆ GetMulModelSize()

size_t dl::VK::GetMulModelSize ( )
inline

在文件 dl_vk.h1354 行定义.

◆ GetPushConstant()

PushConstantData * dl::VK::GetPushConstant ( size_t id)
inline

返回 推送常量

在文件 dl_vk.h818 行定义.

◆ GetPushConstantNext()

size_t dl::VK::GetPushConstantNext ( )
inline

返回 下一个可用推送常量

在文件 dl_vk.h813 行定义.

◆ GetRenderInfo2D()

const RenderInfo2D & dl::VK::GetRenderInfo2D ( )
inline

返回绘制信息

在文件 dl_vk.h940 行定义.

◆ GetRenderInfo3D()

const RenderInfo3D & dl::VK::GetRenderInfo3D ( )
inline

在文件 dl_vk.h945 行定义.

◆ GetRootCoor()

Coor * dl::VK::GetRootCoor ( size_t index)

◆ GetUboBoneFree()

size_t dl::VK::GetUboBoneFree ( )
inline

返回可用蒙皮id(注意设置不可用)

在文件 dl_vk.h843 行定义.

◆ GfxPushDot()

void dl::VK::GfxPushDot ( const VertexGfx & v)
inline

在文件 dl_vk.h1309 行定义.

◆ GfxPushDot2D()

void dl::VK::GfxPushDot2D ( const VertexGfx & v)
inline

在文件 dl_vk.h1330 行定义.

◆ GfxPushLine()

void dl::VK::GfxPushLine ( const VertexGfx & v0,
const VertexGfx & v1 )
inline

在文件 dl_vk.h1315 行定义.

◆ GfxPushLine2D()

void dl::VK::GfxPushLine2D ( const VertexGfx & v0,
const VertexGfx & v1 )
inline

在文件 dl_vk.h1336 行定义.

◆ GfxPushTriangle()

void dl::VK::GfxPushTriangle ( const VertexGfx & v0,
const VertexGfx & v1,
const VertexGfx & v2 )
inline

在文件 dl_vk.h1322 行定义.

◆ GfxPushTriangle2D()

void dl::VK::GfxPushTriangle2D ( const VertexGfx & v0,
const VertexGfx & v1,
const VertexGfx & v2 )
inline

在文件 dl_vk.h1343 行定义.

◆ HasStencilComponent()

bool dl::VK::HasStencilComponent ( VkFormat format)
inline

格式含有模板通道

在文件 dl_vk.h761 行定义.

◆ LoadSkybox()

size_t dl::VK::LoadSkybox ( std::string_view path)

加载天空盒

◆ PopulateDebugMessengerCreateInfo()

void dl::VK::PopulateDebugMessengerCreateInfo ( VkDebugUtilsMessengerCreateInfoEXT & createInfo)

填充调试信使结构

◆ Release()

void dl::VK::Release ( )
inline

释放操作起始

在文件 dl_vk.h957 行定义.

◆ Render()

void dl::VK::Render ( GLFWwindow * window)

绘制一帧

◆ RenderEnd()

void dl::VK::RenderEnd ( )
inline

帧尾清理工作

在文件 dl_vk.h572 行定义.

◆ RenderModel()

void dl::VK::RenderModel ( VkCommandBuffer command_buffer,
Model * model,
size_t shadow )

绘制模型

◆ ScreenShot()

void dl::VK::ScreenShot ( std::string_view path_name)

◆ SetDebugView()

void dl::VK::SetDebugView ( DebugView3D type)
inline

在文件 dl_vk.h866 行定义.

◆ SetFrameBufferResize()

void dl::VK::SetFrameBufferResize ( )
inline

设置帧缓冲大小发生变化

在文件 dl_vk.h580 行定义.

◆ SetSkybox()

void dl::VK::SetSkybox ( size_t i)

设置当前天空盒

◆ SetUboBoneFree()

void dl::VK::SetUboBoneFree ( size_t id)
inline

设置蒙皮id可用

在文件 dl_vk.h854 行定义.

◆ SetUboBoneUse()

void dl::VK::SetUboBoneUse ( size_t id)
inline

设置蒙皮id占用(描述符创建时就已经映射)

在文件 dl_vk.h860 行定义.

◆ TransitionImageLayout()

void dl::VK::TransitionImageLayout ( VkImage image,
VkFormat format,
VkImageLayout oldLayout,
VkImageLayout newLayout,
uint32_t mip_level )

转换图像布局

◆ Update()

void dl::VK::Update ( )

一帧逻辑(无需等待上帧完成的操作)

◆ UpdateCanvasDescriptor()

void dl::VK::UpdateCanvasDescriptor ( Canvas * canvas)

◆ UpdateCanvasRenderTarget()

void dl::VK::UpdateCanvasRenderTarget ( size_t rt_id,
VKRenderTarget & rt )

◆ UpdateTexture2D()

void dl::VK::UpdateTexture2D ( Texture tex,
const PointU & xy,
Image * image,
const RectU & rect )

更新纹理区域(自动生成mipmap)

◆ UpdateUboBone()

void dl::VK::UpdateUboBone ( size_t id,
std::vector< Matrix4 > & trans )
inline

更新骨骼ubo(实例id)

在文件 dl_vk.h829 行定义.

类成员变量说明

◆ _param

struct dl::VK::RenderParam dl::VK::_param

该类的文档由以下文件生成: