Javascript 面向对象的WebGL上下文包装失败
我开始使用WebGL进行开发,对JavaScript知之甚少。我试图创建一个类来管理WebGL上下文 我有以下内容:我的HTML页面:Javascript 面向对象的WebGL上下文包装失败,javascript,webgl,Javascript,Webgl,我开始使用WebGL进行开发,对JavaScript知之甚少。我试图创建一个类来管理WebGL上下文 我有以下内容:我的HTML页面: 星网 类Contexto.js: 函数上下文(画布) { this.canvas=画布; this.contextoGL; this.contexto_creado=false; } Contexto.prototype.crearContextoWebGL=函数() { 尝试 { this.contextoGL=WebGLDebugUtil
星网
类Contexto.js
:
函数上下文(画布)
{
this.canvas=画布;
this.contextoGL;
this.contexto_creado=false;
}
Contexto.prototype.crearContextoWebGL=函数()
{
尝试
{
this.contextoGL=WebGLDebugUtils.makeDebugContext(this.canvas.getContext(“webgl”);
如果(!this.contextoGL)
this.contexto_creado=false;
其他的
this.contexto_creado=true;
}
捕获(e)
{
console.log(“没有与gl相关的文件”);
}
};
Contexto.prototype.contextoCreado=函数()
{
返回this.contexto_creado;
};
Contexto.prototype.getGL=函数()
{
返回this.contextoGL;
};
Contexto.prototype.setColor=函数(r、g、b、a)
{
this.contextoGL.clearColor(r,g,b,a);
};
类application.js
:
window.onload=main;
函数main()
{
var canvas=document.getElementById(“屏幕画布”);
var contextoWebGL=新的Contexto(画布);
contextoWebGL.crearContextoWebGL();
log(contextoWebGL.contextoCreado());
contextoWebGL.setColor(0.5161561076529324,1,0.7,1);
}
当我试图改变背景时
contextoWebGL.setColor(0.5161561076529324,1,0.7,1)
我得到以下错误:
UncaughtTypeError:对象#没有“clearColor”方法
创建面向对象上下文的正确代码是什么
在JavaScript应用程序中使用面向对象的代码时,效率会受到影响吗?这里有两个问题:您没有获得上下文,并且没有正确处理该故障
WebGLDebugUtils.makeDebugContext
不会测试是否给定了实际的上下文,因此如果getContext
返回null,它将生成一个行为与您看到的一样的无用对象。您应该首先测试是否成功获得WebGL上下文,然后使用makeDebugContext
包装它
this.contextoGL = this.canvas.getContext( "webgl" );
if( !this.contextoGL ) {
this.contexto_creado = false;
} else {
this.contexto_creado = true;
this.contextoGL = WebGLDebugUtils.makeDebugContext( this.contextoGL );
}
这将导致您的代码正确报告无法获取上下文。这种结构还可以更容易地选择不使用调试上下文,以获得更好的性能