使用 jquery 访问 three.js 的着色器文件内容

Posted

技术标签:

【中文标题】使用 jquery 访问 three.js 的着色器文件内容【英文标题】:Accessing shader file contents for three.js using jquery 【发布时间】:2014-01-22 03:05:32 【问题描述】:

我需要访问使用 html 从另一个脚本中导入的字符串的文本。

我在 html 文件中包含有问题的文本文件:

<script src="shaders/fragmentshader.fs" id=fragmentshader></script>

然后我想将此文件的内容放在另一个脚本文件中的变量中,并将其用作三个,js 的着色器:

var fShader = $('#fragmentshader');

var shader = new THREE.ShaderMaterial(
    vertexShader: vShader.text(),
    fragmentShader: fShader.text()
);

如果我只是在 html 文件中的脚本标记之间编写必要的着色器代码,则此代码可以正常工作,但如果如上所述使用,则仅访问严格的 url(而不是数据)。

我的问题是如上所示加载文件后如何访问文件中的文本?

【问题讨论】:

【参考方案1】:

不能script 标签中使用src 加载着色器。

你可以使用ShaderLoader.js然后写:

<script data-src="shaders/name/vertex.js" data-name="shader" 
type="x-shader/x-vertex"></script>

在js中:

SHADER_LOADER.load(function(data) 
    var particlesVertexShader = data.shader.vertex;
);

【讨论】:

以上是关于使用 jquery 访问 three.js 的着色器文件内容的主要内容,如果未能解决你的问题,请参考以下文章

Three.js - 在自定义几何图形上平滑着色 Lambert 材质的问题

three.js 着色器材质之变量

Three.js (r64) - Blender JSON 导出丢失法线以实现平滑着色

Three.js着色器基础含源码

如何将 Three.js 着色器应用于节点

Three.js 中的自定义纹理着色器