我使用以下代码在HTML文件中声明我的glsl es shader程序:
<script id="shader-fs" type="x-shader/x-fragment">..shader-code..</script>
如learning WebGL示例所示。一切正常,但我不明白为什么要使用脚本标记的type属性。我想知道在哪里指定了“x-shader/x-fragment”值。谁做的……W3C、Khronos Group还是浏览器开发人员?有人能帮我吗?谢谢你。
最佳答案
没有官方组织指定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"
是一种脚本类型,因此浏览器可以安全地忽略它。
关于html - WebGL和HTML着色器类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8020151/