WebGL和HTML着色器类型

Luc*_*ann 15 html shader types glsl webgl

我使用以下代码在HTML文件中声明我的GLSL ES着色器程序:

<script id="shader-fs" type="x-shader/x-fragment">..shader-code..</script>
Run Code Online (Sandbox Code Playgroud)

正如在学习WebGL示例中看到的那样.一切正常,但我不明白为什么我应该使用脚本标签的type属性.我想知道指定"x-shader/x-fragment"值的位置.是谁... W3C,Khronos集团或浏览器开发商?有谁能够帮我?Tahnk你.

Ant*_*ton 19

没有官方组织指定GLSL代码应放在<script>类型的标签中"x-shader/x-fragment".

将GLSL代码放在该<script>标记内的唯一原因是因为教程编写者认为如果将GLSL代码放在<script>标记而不是普通字符串中,他的代码会更清晰.

但是,由于WebGL将GLSL代码作为字符串值接受,因此作者必须编写一个辅助函数来调用getShader(gl, id)页面中的脚本标记并将其转换为javascript字符串,然后再将其传递给WebGL.

作者选择类型值的"x-shader/x-fragment"原因是因为"x-shader/x-fragment"浏览器不是已知的脚本类型,因此浏览器会安全地忽略它.

  • 另外,IDE 还使用它来提供语法突出显示,而在声明为 Javascript 字符串值时则无法提供语法突出显示。 (3认同)

Mor*_*bel 5

这个想法是浏览器不知道类型“ x-shader/x-fragment”。如果您将类型更改为其他类型(例如“foo”),您的代码将正常工作。

换句话说,如何存储着色器源代码没有标准。但在编译着色器时,您将需要它作为字符串。