2

私はいくつかの WebGL コードを書きましたが、実際にはここにある例で遊んでいます。とにかく、3 つの別個の疑似クラスを作成することにしました。ここでは、スペースを確保するためにそのうちの 1 つだけを示します。他のクラスは質問に関連しているとは思わないためです。

var Buffer = (function() {

/* PRIVATE MEMBERS */
var currentBuffer;
var itemSize = 3;
var numberItems;
var localWebGLContext;

/* CONSTRUCTOR */
var BufferConstructor = function(webGLWorker, vertices) {
    localWebGLContext = webGLWorker.getWebGLContext();
    currentBuffer = localWebGLContext.createBuffer();
    localWebGLContext.bindBuffer(localWebGLContext.ARRAY_BUFFER, currentBuffer);
    localWebGLContext.bufferData(localWebGLContext.ARRAY_BUFFER, new Float32Array(vertices), localWebGLContext.STATIC_DRAW);
    numberItems = vertices.length / itemSize;
};

return BufferConstructor;
})();

したがって、すべてをブートストラップする別のファイルにそれらを含める(要求する)ことができる最良の方法は何かを知りたいです。CommonJS について読みましたが、これはサーバー側であり、ここではクライアント側について話しています。私がやろうとしていることは、最終的にはアプリケーションとして非常に大きくなり、すべてを 1 か所にまとめたくないので、すべてを 1 つのファイルに保持する必要はありません。前もって感謝します!

4

1 に答える 1

1

私の WebGL プロジェクトではRequire.jsを使用しています。この構文は、Node の CommonJS 実装ほど優れたものではありませんが、クライアント側の非同期の性質とうまく連携します。簡単な例:

require([
    "renderer",
    "util"
], function(Renderer, Util) {
    // Use the code from your required files in here!
});

また、モジュールを定義するのも簡単です:

define([
    "matrix" // Dependencies for this module
], function(Matrix) {
    return {
        DrawSuff: function() { /*...*/ }
    }
});

ここで WebGL プロジェクトを使用した簡単な例を見ることができます。

于 2012-03-18T14:21:24.327 に答える