Vulkan系列教程第一期第1节-VkInstance
vulkan吧
全部回复
仅看楼主
level 12
小完能🔥 楼主
大家肯定都接触过Windows编程吧,那么对于HINSTANCE肯定十分熟悉。和Windows编程类似,每个Vulkan程序都必须有且只能有一个VkInstance(这里的叙述可能不准确,应该是每个进程中只能有一个),通过它可以获取到Device等信息(下节会详细说明Device)。下面就是与VkInstance有关的一些函数和结构体,下列东西是按照代码的顺序来写的,所以大家可以按照这个顺序来定义变量和使用函数。
结构体:
typedef struct VkApplicationInfo
{
VkStructureType sType;
const void* pNext;
const char* pApplicationName;
uint32_t applicationVersion;
const char* pEngineName;
uint32_t engineVersion;
uint32_t apiVersion;
} VkApplicationInfo;
在这个结构体当中需要注意的是sType,在Vulkan当中,所有的结构体都有一个sType,它必须被设置为特定值。好在这些固定值比较好猜。拿这个结构体来举例:在这个结构体中,sType必须设置为VK_STRUCURE_TYPE_APPLICATION_INFO,从中我们可以看到这个值前三个单词是固定的,后几个词与结构体的名字有很大的联系。然后在这个结构体中pNext可以设置为NULL,apiVersion必须设置为0(然而官方参考手册中说可以设置为支持的版本,然而我没有看懂.....),其他东西就可以按照自己的程序进行设置了。
typedef struct VkInstanceCreateInfo
{
VkStructureType sType;
const void* pNext;
VkInstanceCreateFlags flags;
const VkApplicationInfo* pApplicationInfo;
uint32_t enableLayerCount;
const char* const* ppEnableLayerName;
uint32_t enableExtensionCount;
const char* const* ppEnableExtensionName;
} VKInstanceCreateInfo;
在这个结构体中,目前我们需要设置的只有sType和pApplicationInfo,其他的我们设置为NULL或者0就好了,暂时还用不到他们(其实是我还没看到那里.....)sType必须设置为VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,pApplicationInfo必须是一个有效的VkApplicationInfo指针(官方参考书中说设置为NULL也可以,我还没有试)
函数:
vkCreateInstance
(
const VKInstanceCreateInfo* pCreateInfo,
const VKAllocationCallbacks* pAllocator,
VKInstance* pInstance
);
其中,pCreateInfo为一个有效的VkInstanceCreateInfo类型的变量的指针,不能为NULL,pAllocator的目的不明,几乎所有Vulkan函数里都有他,可以设置为NULL。pInstance就是你提供的一个VKInstance类型变量的指针了,创建的Instance会放到这里。
关于返回值:
如果返回值为VK_SUCCESS,则为成功
为其他值的话则可以参考官方的手册或者在群文件中的PDF里都有介绍。
然后我们就成功的创建了一个VKInstance,接下来需要针对于Device进行操作,下一节中我们会介绍一些与显卡有关的内容。
若本节教程有任何纰漏,欢迎大家在下边留言,或者加入官方QQ群,群号在置顶里有。
(纯手敲,希望大家支持!)
2016年04月25日 10点04分 1
level 12
小完能🔥 楼主
类似了...爪机打字真累...
--------为什么不关注极新科技工作室吧?
2016年04月25日 10点04分 3
level 1
支持。。。。。。。。。。。。。。。。。
2016年04月26日 10点04分 5
level 12
支持支持[花心]
2016年04月30日 00点04分 6
level 12
学神
2016年04月30日 14点04分 7
level 8
支持
2016年05月04日 07点05分 8
level 12
支持
2016年05月04日 15点05分 9
level 8
帮顶。话说你们能进去 vulkan的示例代码下载页面吗?
2016年12月11日 09点12分 10
level 10
什么时候更新?
2016年12月20日 03点12分 11
1