Vulkan学习小结——框架搭建

本文是作者在学习Vulkan过程中关于框架搭建的小结,通过展示一个简单的Vulkan程序,阐述了如何在大约1000行代码中实现绘制三角形的基本流程,尽管这个例子尚未涉及VertexBuffer和IndexBuffer,而是直接在Shader中硬编码了顶点信息。
摘要由CSDN通过智能技术生成

毕设要用Vulkan做个渲染模块,最近几天才开始学习....

一个典型的Vulkan程序框架如下所示:

class VulkanApplication
{
public:
	void run()
	{
		initWindow();
		initVulkan();
		mainLoop();
	}
private:
void initWindow()
	{
		glfwInit();
		glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API);
		glfwWindowHint(GLFW_RESIZABLE, GLFW_FALSE);
		window = glfwCreateWindow(WINDOW_HEIGHT, WINDOW_WIDTH, WINDOW_TITLE, nullptr, nullptr);
	}

	void initVulkan()
	{
		createInstance();
		setUpDebugCallback();
		createSurface();
		pickPhysicalDevice();
		createLogicalDevice();
		createSwapChain();
		createImageViews();
		createRenderPass();
		createGriphicsPipeline();
		createFragmentBuffer();
		createCommandPool();
		createCommandBuffer();
		createSemaphores();
	}

	void mainLoop()
	{
		while (!glfwWindowShouldClose(window))
		{
			glfwPollEvents();
			drawFrame();
		}
		vkDeviceWaitIdle(device);
		glfwDestroyWindow(window);
		glfwTerminate();
	}
}
一.Vulkan创建流程的回顾:
1.使用GLFW初始化Window,设置ClientAPI类型,窗口是否可以拉伸,最后创建窗口。
2.初始化Vulkan部分:
(1)创建VkInstance
使用VkInstanceCreateInfo初始化信息,其包含VkApplicationInfo以及Extension的Validation Layer的信息。由于Vulkan是平台独立的API,与特定的窗口系统交互时需要引入额外的Extension,使用glfwGetReqiuredInstanceExtension获取窗口系统需要的Extension,使用vkEnumerateInstanceExtensi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值