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"浏览器不是已知的脚本类型,因此浏览器会安全地忽略它.
这个想法是浏览器不知道类型“ x-shader/x-fragment”。如果您将类型更改为其他类型(例如“foo”),您的代码将正常工作。
换句话说,如何存储着色器源代码没有标准。但在编译着色器时,您将需要它作为字符串。