使用纹理

加载或者创建了纹理后,便可以在组件或者材质的uniforms中使用。但通过以上的章节,我们知道了纹理的种类有许多,虽然组件数据可以通过指定具体的类型,比如cube-texture来取得具体的类型的资源,但对于uniforms来说是无法判断的,同时也比较繁琐。

为了解决这个问题,我们遵循约定大于配置的原则,对于所有这些纹理资源,开发者只需要将组件数据类型指定为texture,加上不同的前缀,资源系统会自动匹配获取对应的资源:

  1. 不加前缀,取得普通纹理。
  2. cube-前缀,取得立方体纹理资源。
  3. video-前缀,取得视频纹理。
  4. render-前缀,取得渲染纹理。

如果是应用于uniforms中,开发者不需要自己去关心它们的区别,只需要uniforms="u_baseColorMap:video-vt"这样即可,但如果是自定义组件数据,就需要开发者自己处理一下了:

onUpdate(data: {texture: XrFrame.Texture | XrFrame.ITextureWrapper}) {
  const realTex = xrFrameSystem.isTextureWrapper(data.texture)
    ? data.texture.texture
    : data.texture;
}