我正在尝试在服务器端渲染一个立方体,并且能够使用CanvasRenderer这样做,但我希望能够使用WebGLRenderer渲染它,这应该会产生更好的结果。我已将其缩小到此代码段:
var jsdom = require('jsdom')
, document = jsdom.jsdom('<!doctype html><html><head></head><body></body></html>')
, window = document.createWindow()
, THREE = require('three');
document.onload = docOnLoad();
function docOnLoad()
{
console.log("docOnLoad called.");
global.document = document;
global.window = window;
//renderer = new THREE.CanvasRenderer(); //works
renderer = new THREE.WebGLRenderer();
renderer.setSize(400, 400);
document.body.appendChild(renderer.domElement);
}
使用WebGLRenderer时,我得到了:
_glExtensionTextureFloat = _gl.getExtension( 'OES_texture_float');
^
TypeError: Cannot call method 'getExtension' of undefined
at initGL (C:\programming\nodejs\node_modules\three\three.js:25870:34)
在尝试调试three.js代码时,console.log(_gl)确实显示_gl未定义,其来源为第25856行,其中:
_gl = _canvas.getContext( 'webgl', attributes ) || _canvas.getContext( 'experimental-webgl', attributes );
现在,_canvas的console.log()显示:[Canvas 0x0]
有没有人遇到过类似的东西?
答案 0 :(得分:1)
通常在您已经从_canvas获取2D上下文时发生。无法从同一画布获取2D上下文和gl。如果不是这种情况,您能否确认是否能够独立地(从node.js)成功运行任何其他WebGL示例?