我在 HTML 文件中声明我的 GLSL ES 着色器程序,使用以下代码:
<script id="shader-fs" type="x-shader/x-fragment">..shader-code..</script>
如 learning WebGL 中所示例子。一切正常,但我不明白为什么我应该使用脚本标签的类型属性。我想知道在哪里指定了“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/