0

iewebglを使用しようとしていますが、 three.jsの例の 1 つである webgl_loader_obj の実行に問題があります。次のエラーが表示されます。

SCRIPT445: Object doesn't support this action iewebgl.html, line 134 character 5

この行を指す

// texture
var manager = new THREE.LoadingManager();  <!-- here  -->
manager.onProgress = function ( item, loaded, total ) {

    console.log( item, loaded, total );
};

また、テクスチャとモデルの部分をコメントアウトして、マネージャーなしでオブジェクトをロードしようとしましたが、次のエラーが表示されます。

SCRIPT445: Object doesn't support this action OBJLoader.js, line 19 character 3

この行を指す

THREE.OBJLoader.prototype = {

constructor: THREE.OBJLoader,

load: function ( url, onLoad, onProgress, onError ) {

    var scope = this;

    var loader = new THREE.XHRLoader( scope.manager );  <!-- here-->
    loader.setCrossOrigin( this.crossOrigin );

キャンバスを作成して JavaScript から WebGL コンテキストを取得する方法と、ヘルパーを使用して WebGL コンテキストを作成する方法の両方を試しました。

three.jsのr.46でie 10を使用しています。three.js の r.61 を使用すると、次の例外が発生します。

SCRIPT5007: Unable to get property 'getExtension' of undefined or null reference three.min.js, line 8322 character 2

これは

} catch (Zb) {
    console.error(Zb)
}
Na = j.getExtension("OES_texture_float"); <!-- here -->
j.getExtension("OES_texture_float_linear");
va = j.getExtension("OES_standard_derivatives");

何がそれを引き起こしているのでしょうか?

4

2 に答える 2

1

キャンバスの作成と JavaScript からの WebGL コンテキストの取得の例を使用して問題を解決できました

<div id="container"> 
    <script id="WebGLCanvasCreationScript" type="text/javascript">WebGLHelper.CreateGLCanvasInline('renderCanvas', onLoad)</script>
</div>

init()次に、との両方のanimate()呼び出しを次のブロックに配置し、グローバル vars var コンテナーである stats; を除外しました。

var camera, cameraTarget, scene, renderer;
function onLoad() {
    <!-- require(["js/Three.js"], function () { -->
    init();
    animate();
    <!-- }); -->
}

私はコードを使用しませんでしたrequireが、他の誰かが同様の問題に遭遇し、それが必要になった場合に備えて含めました。

最後に、レンダリング コードを次のように変更する必要がありました。(元のコメントを残しました)

var externalCanvas = document.getElementById('renderCanvas');
renderer = new THREE.WebGLRenderer({ 'canvas': externalCanvas, 'clearColor': 0xffffff });
<!-- renderer = new THREE.WebGLRenderer(); -->
<!-- renderer = new THREE.WebGLRenderer( { antialias: true, alpha: false } ); -->
于 2013-10-14T14:00:39.283 に答える
0

縮小されていないバージョンの three.js を使用すると、問題は _gl オブジェクト (縮小されたバージョンでは j) が null であることがわかると思います。また、three.js が例外をスローし、「WebGL コンテキストの作成中にエラーが発生しました」というメッセージをログに記録してから、_gl オブジェクトの使用を試みるように見えます。:)

コンソールにそのメッセージが表示されましたか? これは、エラーが発生したと思われる縮小されていないソースです。

function initGL() {

    try {

        var attributes = {
            alpha: _alpha,
            premultipliedAlpha: _premultipliedAlpha,
            antialias: _antialias,
            stencil: _stencil,
            preserveDrawingBuffer: _preserveDrawingBuffer
        };

        _gl = _canvas.getContext( 'webgl', attributes ) || _canvas.getContext( 'experimental-webgl', attributes );

        if ( _gl === null ) {

            throw 'Error creating WebGL context.';

        }

    } catch ( error ) {

        console.error( error );

    }

    _glExtensionTextureFloat = _gl.getExtension( 'OES_texture_float' );
    _glExtensionTextureFloatLinear = _gl.getExtension( 'OES_texture_float_linear' );
    _glExtensionStandardDerivatives = _gl.getExtension( 'OES_standard_derivatives' );

WebGL は IE でサポートされていますか? 他の webgl テストは動作しますか? IE Win8.1 のプレビューはありませんが、three.js が動作するかどうか知りたいです。

于 2013-10-13T03:28:28.207 に答える