如何使用外部生成的纹理与three.js

时间:2015-04-20 03:10:22

标签: node.js three.js textures

我正在使用node.js上托管的three.js.我正在使用它可以生成opengl纹理作为输出帧的相机。我想在three.js中使用这个实时纹理流。我已经能够在相机和three.js之间创建共享上下文,我可以确认相机上下文和three.js上下文中都存在纹理。我不太确定如何让three.js尊重外部维护的纹理。现有的videotexture对象不是正确的方法,它从浏览器dom对象复制framedata,我想直接使用相机生成的纹理。

由于这类似于threejs渲染到纹理的支持,只有渲染发生在threejs之外,我试图修改该代码以支持外部纹理,但这看起来有点像一个混乱。

我目前正在考虑我应该实现一个shadermaterial对象的变体,该变体理解如何使用外部生成的纹理,但是想知道是否有更好的路径。

1 个答案:

答案 0 :(得分:0)

好的,我已经弄明白了。需要的步骤

  • 首先,在创建threejs渲染器之前,使用GLFW调用或目标平台上的等效渲染器创建GL上下文
  • 然后,在threejs中创建一个带有映射纹理的材质,作为threejs场景创建的一部分。我正在使用MeshBasicMaterial和映射的jpg文件,但无论如何。
  • 现在使用您之前创建的一个gl上下文作为参数创建webglrenderer
  • 执行一次渲染过程。这将实例化所有webgl纹理和程序,并将它们附加到您的材料上。
  • 现在查看您之前创建的材质,map属性将包含webgl纹理索引。您可以将其传递给其他上下文中的GL代码,并将其渲染到此纹理,渲染结果将显示在您的threejs材质中。