# CubeTexture from canvas

**URL:** <https://forum.babylonjs.com/t/cubetexture-from-canvas/32412>\
**Category:** Questions\
**Created:** [July 22, 2022, 7:37pm UTC](https://forum.babylonjs.com/t/cubetexture-from-canvas/32412 "2022-07-22T19:37:10Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![vinhui](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/vinhui/32/41914_2.png) [@vinhui](https://forum.babylonjs.com/u/vinhui)\
**Post date:** [July 22, 2022, 7:37pm UTC](https://forum.babylonjs.com/t/cubetexture-from-canvas/32412/1 "2022-07-22T19:37:10Z")

</div>

Hi,

Is it possible to create CubeTextures from either a single or multiple canvasses?

If not, can we wrap a plain webgl texture in the Babylon texture class?

---

<div class="post-metadata">

**Author:** ![sebavan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sebavan/32/57_2.png) [@sebavan](https://forum.babylonjs.com/u/sebavan)\
**Post date:** [July 22, 2022, 8:33pm UTC](https://forum.babylonjs.com/t/cubetexture-from-canvas/32412/2 "2022-07-22T20:33:58Z")

</div>

We do not support cubeTexture from multiple canvases so far, but you could use engine.wrapWebGLTexture to wrap an external texture in an InternalTexture.

---

<div class="post-metadata">

**Author:** ![vinhui](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/vinhui/32/41914_2.png) [@vinhui](https://forum.babylonjs.com/u/vinhui)\
**Post date:** [July 22, 2022, 8:49pm UTC](https://forum.babylonjs.com/t/cubetexture-from-canvas/32412/3 "2022-07-22T20:49:29Z")

</div>

Thanks, I was searching the Texture classes and forgot to look in the engine class. This should make it possible to do what I want

---

<div class="post-metadata">

**Author:** ![vinhui](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/vinhui/32/41914_2.png) [@vinhui](https://forum.babylonjs.com/u/vinhui)\
**Post date:** [July 27, 2022, 9:56am UTC](https://forum.babylonjs.com/t/cubetexture-from-canvas/32412/4 "2022-07-27T09:56:16Z")

</div>

The `material.setTexture()` requires a `BaseTexture`. Is there a function to wrap the `InternalTexture` so that we can use it in `setTexture` or do we have to do this manually (i.e, copy [Babylon.js/dynamicTexture.ts at master · BabylonJS/Babylon.js · GitHub](https://github.com/BabylonJS/Babylon.js/blob/master/packages/dev/core/src/Materials/Textures/dynamicTexture.ts) and change function implementations)?

---

<div class="post-metadata">

**Author:** ![sebavan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sebavan/32/57_2.png) [@sebavan](https://forum.babylonjs.com/u/sebavan)\
**Post date:** [July 27, 2022, 3:23pm UTC](https://forum.babylonjs.com/t/cubetexture-from-canvas/32412/5 "2022-07-27T15:23:49Z")

</div>

you can do:

```auto
const baseTexture = new BaseTexture(scene);
baseTexture._texture = yourInternalTexture;

```

This should work correctly.

---

<div class="post-metadata">

**Author:** ![vinhui](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/vinhui/32/41914_2.png) [@vinhui](https://forum.babylonjs.com/u/vinhui)\
**Post date:** [July 27, 2022, 3:46pm UTC](https://forum.babylonjs.com/t/cubetexture-from-canvas/32412/6 "2022-07-27T15:46:37Z")

</div>

Thanks, that seems easy.

It would make sense to me though, to be able to pass it in the constructor, or have a static constructor method for it.

---

<div class="post-metadata">

**Author:** ![sebavan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sebavan/32/57_2.png) [@sebavan](https://forum.babylonjs.com/u/sebavan)\
**Post date:** [July 27, 2022, 4:09pm UTC](https://forum.babylonjs.com/t/cubetexture-from-canvas/32412/7 "2022-07-27T16:09:55Z")

</div>

yup if it all works, I ll add this for you

---

<div class="post-metadata">

**Author:** ![vinhui](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/vinhui/32/41914_2.png) [@vinhui](https://forum.babylonjs.com/u/vinhui)\
**Post date:** [July 28, 2022, 8:22am UTC](https://forum.babylonjs.com/t/cubetexture-from-canvas/32412/8 "2022-07-28T08:22:32Z")

</div>

I created a quick playground example. It seems to work perfectly.

> **[Babylon.js Playground](https://playground.babylonjs.com/#MBXLI0)**
>
> Babylon.js playground is a live editor for Babylon.js WebGL 3D scenes

---

<div class="post-metadata">

**Author:** ![sebavan](https://sea2.discourse-cdn.com/flex024/user_avatar/forum.babylonjs.com/sebavan/32/57_2.png) [@sebavan](https://forum.babylonjs.com/u/sebavan)\
**Post date:** [July 28, 2022, 2:22pm UTC](https://forum.babylonjs.com/t/cubetexture-from-canvas/32412/9 "2022-07-28T14:22:08Z")

</div>

This will be in the next nightly [Allow creation of baseTexture from internalTexture by sebavan · Pull Request #12804 · BabylonJS/Babylon.js · GitHub](https://github.com/BabylonJS/Babylon.js/pull/12804)
