12 2023 档案

摘要:在Vulkan /OpenGL 绘制图形时,可能需要绘制多个并不相连的图形。这样的情况下这几个图形没法被当做一个图形来处理。也就需要多次调用 DrawArrays 或 DrawElements. 如果图形很多,可能会需要用一个循环来调用: for (int i = 0; i < num_object 阅读全文
posted @ 2023-12-27 17:51 经纬视界 阅读(237) 评论(0) 推荐(0)
摘要:/// c++ 内存文件使用例程class MemoryBuffer : public std::strstreambuf { public: using Base = std::basic_streambuf<char>; using char_type = typename Base::char 阅读全文
posted @ 2023-12-25 09:49 经纬视界 阅读(51) 评论(0) 推荐(0)
摘要:C++ std::is_same_v的实现 声明: template<class _Ty, class _Uty> constexpr bool is_same_v = false 特化版本后,即是同一个类型的实现(同一个变量的版本): template<class _Ty> constexpr b 阅读全文
posted @ 2023-12-22 10:04 经纬视界 阅读(54) 评论(0) 推荐(0)
摘要:C++ 标准17 折叠表达式的学习 源码如下:其中调用了 _Is_any_of_v _EXPORT_STD template <class _Ty> _INLINE_VAR constexpr bool is_integral_v = _Is_any_of_v<remove_cv_t<_Ty>, b 阅读全文
posted @ 2023-12-21 11:00 经纬视界 阅读(241) 评论(0) 推荐(0)
摘要:先说结论: VkDescriptorSetLayout 与 VkDescriptorSet 不是一一对应, VkDescriptorSetLayout 可以有很多,VkDescriptorSet 是一个对 VkDescriptorSetLayout 的任意组合 与 destr 参考Shader la 阅读全文
posted @ 2023-12-13 16:06 经纬视界 阅读(162) 评论(0) 推荐(0)
摘要:在GPU执行过程中有责任保证接下来访问的这块内存是保证有效的,也就是确保先前写入的数据对目标单元可见。简单介绍一下GPU Cache体系,平时听得比较多的是CPU Cache,但是GPU同样有着自己的Cache体系。 如下图所示,在这里可以看GPU同样是有着L1/L2 Cache的架构。 那么在GP 阅读全文
posted @ 2023-12-09 14:45 经纬视界 阅读(107) 评论(0) 推荐(0)
摘要:Image Layout 和 Layout Transition 在RenderPass创建参数中需要指定RenderPass开始时和RenderPass结束时的ImageLayout也就是initLayout和finalLayout。因为不同的ImageLayout会影响到像素在内存中的组织方式。 阅读全文
posted @ 2023-12-09 14:42 经纬视界 阅读(121) 评论(0) 推荐(0)
摘要:#include <iostream> #include <filesystem> #include <string> namespace fs = std::filesystem; void demo_status(const fs::path& p, fs::file_status s) { s 阅读全文
posted @ 2023-12-04 13:31 经纬视界 阅读(78) 评论(0) 推荐(0)
摘要:1.path类:文件路径相关操作,如指定的路径是否存在等; 2.directory_entry类:获取文件属性等,如指定文件是否是常规文件,还包括文件大小、文件最后修改时间; 3.directory_iterator类:遍历目录,获取目录文件,不包括子目录,其介绍参见; 4.recursive_di 阅读全文
posted @ 2023-12-04 13:25 经纬视界 阅读(49) 评论(0) 推荐(0)
摘要:#include <iostream> #include <fstream> using namespace std; int main() { ifstream infile; try { infile.open("file.txt"); if (!infile) { throw runtime_ 阅读全文
posted @ 2023-12-04 13:21 经纬视界 阅读(46) 评论(0) 推荐(0)
摘要:呈现模式: 对于交换链对显示模式的设置应该是最重要的,因为它代表实际显示图像到屏幕的时机。在Vulkan中有四种显示模式: 1.VK_PRESENT_MODE_IMMEDIATE_KHR 由应用提交的图像立刻被传输到屏幕。这种方式可能导致图像不完整。 2.VK_PRESENT_MODE_FIFO_K 阅读全文
posted @ 2023-12-02 14:53 经纬视界 阅读(358) 评论(0) 推荐(0)
摘要:帧缓冲(Framebuffer)代表由渲染管线进行渲染的一组图像。它们影响管线的最后几个阶段:深度模板测试,颜色混合,逻辑运算,多重采样等等。一个帧缓冲对象总是附着在一个渲染通道上并且可以用在多个具有相似模板编排的渲染通道中。 调用vkCreateFramebuffer创建帧缓冲对象。 在VkFra 阅读全文
posted @ 2023-12-02 14:05 经纬视界 阅读(196) 评论(0) 推荐(0)
摘要:能将渲染管线和运算管线区别开了的要素之一是——通用,在你使用一个渲染管线渲染图像之后也可能进行其他处理或展示给yoghurt。在复杂的图形应用中,图像需要经过许多通道才能生成,每个通道都负责不同的部分,比如全屏幕的后处理或合成,或渲染UI元素等。 这些通道可以由vulkan的一个渲染通道对象表达出来 阅读全文
posted @ 2023-12-02 14:04 经纬视界 阅读(180) 评论(1) 推荐(0)
摘要:渲染是vulkan最基础的功能,也是众多图形化应用最核心的部分。vulkan的渲染过程可以当作是通过执行不同阶段的命令以此来在展示设备上渲染出图片的过程。 vulkan中,渲染管线可以看作是一条生产流水线,命令在管线的开头进入,并且在管线内不同阶段执行。每个阶段都有诸如变换,读取命令或关联的数据,然 阅读全文
posted @ 2023-12-02 14:02 经纬视界 阅读(393) 评论(0) 推荐(0)
摘要:#include <iostream> #include <semaphore> #include <thread> using namespace std; std::counting_semaphore<3> csem(0); // semaphore release = condition_v 阅读全文
posted @ 2023-12-01 09:03 经纬视界 阅读(74) 评论(0) 推荐(0)