2015-04-20 52 views
1

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

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

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

回答

0

好的我已经想通了。一个需要TOT阿克的步骤

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