内容简介:最近在学习对于如下语句出现了疑问这句话的意思是
最近在学习 Vulkan
,结果在查看示例代码的时候:
#version 430 core layout (local_size_x = 64) in; layout(std430, binding=4 ) buffer INFO { vec2 info[]; }; void main() { uint gid = gl_GlobalInvocationID.x; info[gid].x += 1.0; info[gid].y += 1.0; memoryBarrier(); }
对于如下语句出现了疑问
#version 430 core
这句话的意思是 OpenGL
必须是 4.3
以及以上的版本。
那么是不是意味着,如果设备上的 OpenGL
低于这个版本,那么我们编写的 Vulkan
代码就不能执行呢?
答案是否定的,目前我们开发 Vulkan
默认是使用 GLSL
( OpenGL Shading Language
)语言,然后编译完成后的操作符被直接映射成 Vulkan
的定义操作符。
换句话说,我们只要执行如下命令,
$ glslangValidator xx.comp --target-env vulkan1.0
能编译通过,就可以随意指定 #version
的版本。
这个版本号仅仅是 GLSL
语言在进行语法检查的时候需要的,而 Vulkan
是没有这个版本号需要的。
如果不使用 GLSL
语言编写,上述的 #version
应该都不会在语法中出现。
如下是常见的几个问题:
GL_KHR_vulkan_glsl
扩展( GLSL
转 Vulkan
的官方插件)中讲述的非常明确,只要有这个扩展,设备上的 OpenGL
版本是不需要关心的,只需要关心 Vulkan
( SPIR-V
)的版本号就可以了。
如下:
参考链接
以上所述就是小编给大家介绍的《Vulkan中的"#version 430 core"的理解》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 理解原型其实是理解原型链
- 要理解深度学习,必须突破常规视角去理解优化
- 深入理解java虚拟机(1) -- 理解HotSpot内存区域
- 荐 【C++100问】深入理解理解顶层const和底层const
- 深入理解 HTTPS
- 深入理解 HTTPS
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Algorithms + Data Structures = Programs
Niklaus Wirth / Prentice Hall / 1975-11-11 / GBP 84.95
It might seem completely dated with all its examples written in the now outmoded Pascal programming language (well, unless you are one of those Delphi zealot trying to resist to the Java/.NET dominanc......一起来看看 《Algorithms + Data Structures = Programs》 这本书的介绍吧!