2

DDSとCRN(http://code.google )を利用するためにThree.js(r56)でwebgl-texture-utils( https://github.com/toji/webgl-texture-utils )を使用しようとしています.com / p / crunch /)テクスチャ。

textureLoader.load(src, callback);で返されたテクスチャの使い方がわかりませんTHREE.Texture(image, mapping);

THREE.TextureはjavascriptImage()オブジェクトを想定していますが、texture-utilsは、Firebugによって報告されたものを返しますXrayWrapper [Object WebGLTexture {}。これは、ネイティブのWebGLテクスチャタイプであると想定しています。

そのテクスチャをTHREE.Textureの画像として使用できますか?

これが私が試したいくつかのコードです:

var mapping = new THREE.UVMapping();

var image = new Image();
var map = null;

var usetexturetools = true;

if (!usetexturetools) { 

  // normal way of loading

  map = new THREE.Texture( image, mapping );
  var loader = new THREE.ImageLoader();
  loader.addEventListener( 'load', function ( event ) {
    map.image = event.content;
    map.needsUpdate = true;
  });
  loader.addEventListener( 'error', function ( event ) {
    window.console.log("error loading " + texture);
  });
  loader.crossOrigin = 'anonymous';
  loader.load(texture, image);

} else {

 // using webgl-texture-tools - not working because i don't know how to use the object returned by textureLoader.load() with THREE.Texture..

 var textureLoader = new TextureUtil.TextureLoader(renderer.getContext());

 map = new THREE.Texture(textureLoader.load(texture, function(loaded) {
    window.console.log(loaded);
    map.needsUpdate = true;
 }), mapping );

}

map.sourceFile = texture;
map.wrapS = THREE.RepeatWrapping;
map.wrapT = THREE.RepeatWrapping;

map.offset.x = this.getParameter("texture_offset_x");
map.offset.y = this.getParameter("texture_offset_y");

map.repeat.x = this.getParameter("texture_scale_x");
map.repeat.y = this.getParameter("texture_scale_y");

編集:WebGLTextureを作成して返す代わりに、生データのみを返すwebgl-texture-utilsのフォークを作成できると思います。そのため、THREE.DataTexture()でそのデータを使用できます。そこにたどり着いたらやってみます…ソースを見るとかなり手間がかかるようですが、なにか出てこない限りやってみます。

4

0 に答える 0