我正在学习glsl底纹,并且遇到了不同的文件格式。我见过人们给他们的顶点和片段着色器.vert
和.frag
扩展。但是,我也看到了.vsh
,并.fsh
在一个单一的扩展,甚至两者一起着色器.glsl
文件。所以我想知道是否存在标准文件格式,或者“正确”的格式是哪种?
.glslv
和.glslf
。那是我所见过的唯一重要的地方。
我正在学习glsl底纹,并且遇到了不同的文件格式。我见过人们给他们的顶点和片段着色器.vert
和.frag
扩展。但是,我也看到了.vsh
,并.fsh
在一个单一的扩展,甚至两者一起着色器.glsl
文件。所以我想知道是否存在标准文件格式,或者“正确”的格式是哪种?
.glslv
和.glslf
。那是我所见过的唯一重要的地方。
Answers:
GLSL着色器没有标准文件扩展名。最常见的可能是.vert
和.frag
,因为这些是3D Labs在其某些工具中使用的扩展。但这适用于任何形式的标准扩展。
.hpp
vs. .cpp
?.h
与.c
。顶点和片段着色器之间的语法和语义差异比C / C ++头文件和源文件之间的语法和语义差异更大。
.vert
(顶点),(.frag
片段), .tesc
(镶嵌控制), .tese
(镶嵌评价), .geom
(几何), .comp
(计算)。
通过扩展名识别文件类型是Windows特有的。所有其他操作系统使用不同的方法:MacOS X在文件系统条目中的特殊元数据结构中存储文件类型。大多数* nix都是通过针对已知“魔术字节”的数据库测试其内部结构来识别文件的;但是,文本编辑器使用扩展名。
无论如何,GLSL源代码就像任何其他程序源文件一样:纯文本,这就是它们的文件类型。
您可以根据需要选择扩展名。我使用以下命名:
但这是我的选择,从技术上讲,我的程序甚至不执行任何命名或扩展方案。命名是为了让人类阅读并了解其中的内容。具有通用的主要扩展名要求我仅对一个文件扩展名集使用语法高亮规则。
com.stackoverflow.file
,存储为元数据。如果元数据条目存在,LaunchServices会首先尝试从MIME类型猜测它。如果没有,它将寻找扩展名。如果不匹配,它将寻找HFS创建者代码。如果没有,它会放弃。LaunchServices绝不会尝试通过文件头或魔术字节来识别文件。
正如其他人提到的那样,从最严格的意义上讲,没有正确的答案。值得一提的是,Sublime(已针对v2和v3进行了确认)也期望使用.vert和.frag进行语法突出显示和验证。
vs, fs, gs, vsh, fsh, gsh, vshader, fshader, gshader, vert, frag, geom, tesc, tese, comp, glsl
。所以有很多选择:)