- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在新 Vulkan API 的所有创建信息结构 (vk*CreateInfo
) 中,始终有一个 .sType
成员。如果值(value)只能是一件事,为什么会有这个?此外,Vulkan 规范非常明确,您只能使用 vk*CreateInfo
结构作为其相应 vkCreate*
函数的参数。似乎有点多余。我可以看到,如果驱动程序将此结构直接传递给 GPU,您可能需要拥有它(我确实注意到它始终是第一个成员)。但这对于应用程序来说似乎是一个非常糟糕的主意,因为如果驱动程序这样做,应用程序将更不容易出错,并且将 int 添加到结构之前似乎并不是一个计算效率极低的操作。我只是不明白它为什么存在。
长话短说
为什么 vk*CreateInfo
结构有 .sType
成员?
最佳答案
他们有一个,这样 pNext
字段就可以正常工作了。
是的,API 采用具有适当 C 类型的结构,因此调用者和接收者都同意该结构的类型。但尤其是现在,许多这样的结构都有结构链表,这些结构为实现提供了额外的信息。这些扩展结构(尽管许多是 Vulkan 1.1/2 的核心)就像所有其他结构一样,具有自己的 sType
字段。
这些字段是至关重要的,因为链表是用 pNext
指针构建的……它们是 void*
。他们没有设定类型。实现确定非 NULL pNext
指针指向什么的方式是检查存储在那里的前 4 个字节。这是 sType
字段;它允许实现知道将指针转换为什么类型。
当然,API 采用的主要结构并不严格需要 sType
字段,因为它的类型是 API 本身的一部分。但是,这样做有一个假设的原因(它尚未在 Vulkan 版本中得到证实)。
更高版本的 Vulkan 可以扩展命令缓冲池等创建。但它会怎么做呢?好吧,他们可以添加一个全新的入口点:vkCreateCommandPool2
。但是这个函数将具有与 vkCreateCommandPool
几乎完全相同的签名;唯一的区别是它们采用不同的 pCreateInfo
结构。
因此,您所要做的就是声明一个 VkCommandPoolCreateInfo2
结构。然后声明 vkCreateCommandPool
可以采用任何一个。实现如何判断您传入了哪一个?
因为任何此类结构的前 4 个字节都是 sType
。他们可以测试该值。如果值为 VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
,则它是旧结构。如果它是 VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO_2
,那么它就是新的。
当然,如前所述,这还没有成功; 1.0 之后的 Vulkan 版本选择合并扩展结构而不是替换现有结构。但选项就在那里。
关于c - Vulkan:vk*CreateInfo 结构中的 sType 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38514510/
我在尝试使用 Vulkan Hpp 唯一句柄来存储缓冲区及其分配的内存时遇到了以下难题。我声明句柄 vk::UniqueBuffer vertex_buffer; vk::UniqueDeviceMe
当我在 vk.com 墙上分享网站链接时,它会显示网站的标题和缩略图。如何使用 vk ios sdk 做到这一点?我试图在消息中分享一个链接,例如 VKRequest *request = [[VKA
我正在使用以下 php 代码: $vk = new VK($app_id, $api_secret); $user_wall = $vk->api('newsfeed.get', array(
我正在尝试与包括 VK 在内的其他应用程序共享我的 Android 应用程序中的音频文件:https://play.google.com/store/apps/details?id=com.vkont
我正在尝试按照 here 和 here 的描述授权 vk.com 用户 (OAuth 2.0)。问题:每次我只看到一个空白屏幕,除了对 GC 的一次调用之外似乎什么也没有发生。我测试了我的 WebVi
我正在测试 vk.com api 以便能够执行搜索。我可以获得 token ,但是当我使用它时,它总是返回错误:“access_token 已过期”能不能帮我看看是不是代码错了,还是vk的配置? 非常
美好的一天。关于使用库VK的问题。如何获取头像,使用VKSDK\在 Internet 上找不到合适的信息。 最佳答案 在您的请求中,您需要指定以下字段之一:photo_50 或 photo_100 或
我正在尝试在 Swift 2.0 项目中设置 VK iOS SDK。我收到一个错误,我不知道为什么会发生。 AppDelegate.swift: // // AppDelegate.swift //
初始化这个结构的类似 C 的方法是: VkDeviceQueueCreateInfo queueCreateInfo = {}; queueCreateInfo.sType = VK_STRU
如何嵌入来自 vk.com 的视频并指定视频开始的时间(例如:视频应该从中间开始,或从第 5 秒开始),以及隐藏控件,就像在 YouTube 上一样? 一个简单的嵌入看起来像: 为了让它自动播放,我
我正在尝试授权我的独立应用程序。但在我单击“允许”后,它总是重定向到 http://oauth.vk.com/error?err=2 并将其作为响应正文: {"error":"invalid_requ
我面临这样的问题...我确实通过createWallPost在墙上发布,简单文本,从几个字符到非常大的文本的任意长度的纯文本...通过一次发布。下一次发布一次,同样的记录会报错。 ... 我很困惑
我想通过 vk.com 进行授权。我下载this库,但是没有正常的例子怎么用呢?我尝试下一个代码,但它对我不起作用。 package ua.khuta.testVkSdk; import an
我最近在 vk.vom 上看到了一些有趣的 css 技巧 background: url(/images/icons/mono_iconset.gif?8) no-repeat left -237px
我需要写信给List大学名单。我已经写好了要列出的国家和城市。但在大学中,数据的表现略有不同。有 {"response":[201,我不知道如何处理它。我成功地从 here 得到了国家.来自here我
我正在尝试获取电子邮件地址。成功登录后,我有名字,姓氏,除了电子邮件。请帮忙。 VK.Auth.login(function (response) { if (response
我正在尝试使用 vk auth与 martini .但是编译时出错: /goPath/vkAuthTry2.go:38: undefined: YourRedirectFunc 问题是如何定义Your
使用 Perl,我有两个相似的语法, if ($a && $b) { exit() } do { exit() } if ($a && $b) 我相信这些应该是同一件事,但是最上面的一个创建了 nul
vk.com 中使用 zend_oauth 进行身份验证时出现问题 消息:HTTP 请求中出现错误:无法在 TCP 连接 oauth.vk.com 上启用加密:确保为环境正确设置了“sslcafile
我正在使用社交网络 Vkontakte 作为 Oauth2 授权服务器。所以我有几个步骤:1) 使用 request_type=code 请求获取代码2)当我发送访问 token uri的请求时获取a
我是一名优秀的程序员,十分优秀!