着色器代码的 MIME 类型

MIME type for shader code

OpenGL 着色器程序源代码是否有任何已建立的 MIME 类型?我知道 official IANA table doesn't seem to mention one such, so it would have to be some experimental (x-…) or some vendor-specific (vnd.…) subtype, probably of the text/… main type. According to What is the correct file extension for GLSL shaders? 似乎甚至没有为这些建立文件扩展名,但这对我来说是一个完全不同的问题。

背景:
我有时想在某些 WebGL 应用程序的 <script> 标记中包含着色器代码,并且我想以语义上尽可能合理的方式编写该标记的 type= 属性,即使在此刻我想不出这样的选择会产生任何实际差异(除非我称之为 text/javascript 或类似愚蠢的东西)。但是,尽管如此,如果已经符合任何可能随着时间的推移而开发的工具,建立在我还不知道的当前建立的标准之上,那就太好了。

由 Khronos 编写的草案 glTF 标准规定对 GLSL 文件使用 text/plain

我在使用 fetch API 时在 IIS 中提供 GLSL 文件时遇到问题。为了从 IIS 正确提供 GLSL 文件,我必须向 MIME 类型添加一个 .glsl 文件扩展名:

  1. 打开 IIS 并导航到您的站点
  2. 双击 MIME 类型(在日志记录和模块之间)
  3. 在右侧面板的“操作”下方,单击“添加...”
  4. 在“文件扩展名:”下输入“glsl”:
  5. 在“MIME 类型:”下输入“text/plain”

如果您收到“此文件扩展名的 MIME 类型已存在”的错误消息,请关闭“添加 MIME 类型”window 并滚动浏览文件扩展名,直到找到 .glsl 扩展名。确保 MIME 类型是“text/plain”。如果是,并且在您请求 glsl 文件时 IIS 仍在服务 404 页面,那么您就不走运了:\

以下站点更详细地说明了如何添加自定义 MIME 类型:https://www.xsofthost.com/help/add-and-delete-mime-type-within-cpanel/

this link,Krhonos 文档状态:

文件扩展名和 MIME 类型

外部着色器文件可以有任何扩展名。首选的 MIME 类型是 text/plain.

(但是,我仍然在 Chrome 和带有着色器文件的 Edge 中看到错误 - 具体来说,“无法加载模块脚本:需要一个 JavaScript 模块脚本,但服务器以 MIME 类型响应“text/plain”。根据 HTML 规范对模块脚本强制执行严格的 MIME 类型检查。”vertex.glsl:1 )

对 text/plain 不满意,对 vert、frag、vsh、fsh 甚至 glsl 也不满意。

就像有人已经提到的,text/plain 的 mimetype 在某些应用程序中默认情况下可以被视为 javascript。

我将采用 x-shader/x-fragment 和 x-shader/x-vertex,直到出现更可靠的东西。

至于文件扩展名,真正的问题是语法高亮显示,默认情况下在 xfce-mousepad 上似乎没有任何作用。我只是打算使用 c 文件扩展名,因为它在我看来像 c 或者可能是 c 带有一些看不见的 pre-processor 指令。如果鼠标垫支持 glsl、vert、frag、vsh 或 fsh 的语法突出显示,我会采用它,但似乎没有任何标准,我想这是因为网络浏览器上的 opengl 并不常见应用直到 HTML5.