我知道这是一个非常常见的问题。我得到一个无法读取属性“纹理”来自undefined.Sorry我是javascript的新手。
javascript部分我的代码如下
this.createTexture=function(Texturename,width,height){
this.Texture[Texturename]=gl.createTexture();
this.Texture[Texturename].name=Texturename;
this.Texture[Texturename].width=width;
this.Texture[Texturename].height=height;
return this.Texture[Texturename,width,height];
}
我正在尝试在webgl部分创建我的纹理。
我怎样才能在webgl中调用createTexture?我可以在其中输入texturename,width和height并使函数正常工作。我知道这不会只是创建一个纹理,但它只是一个简单的例子。我试过但是
function exampleTexture(){
Texture.createTexture("moon",1024,1024);
}
它说我的错误在行
this.Texture[Texturename]=gl.createTexture();
谢谢
答案 0 :(得分:0)
由this
引用的对象似乎没有Texture
属性。在这种情况下:
this.createTexture=function(Texturename,width,height){
// use this.Texture if available, otherwise init it as an empty object
this.Texture = this.Texture || {};
this.Texture[Texturename]=gl.createTexture();
this.Texture[Texturename].name=Texturename;
this.Texture[Texturename].width=width;
this.Texture[Texturename].height=height;
return this.Texture[Texturename,width,height];
}
关于命名约定的注意事项:在JS中,camelCase通常用于变量,PascalCase用于构造函数。因此,我会将this.Texture
重命名为this.textures
,将Texturename
重命名为textureName
。