gpt4 book ai didi

Javascript:为什么 "texture"参数未定义?

转载 作者:行者123 更新时间:2023-11-30 10:46:11 24 4
gpt4 key购买 nike

我是 Javascript 的新手,我正在尝试使用 WebGL 并在下面的代码中遇到错误,"texture.image is undefined"。当我使用 Firebug 调试它时,this.starshipTexture.image 正在初始化并加载图像文件就好了,但是当调用 handleLoadedTexture(texture) 时,texture 参数显示为未定义。

    starship.prototype.initTexture = function () {
var starshipImage = new Image();
this.starshipTexture = gl.createTexture();
this.starshipTexture.image = starshipImage;

starshipImage.onload = function () {
handleLoadedTexture(this.starshipTexture)
}
starshipImage.src = "starship.gif";
}

function handleLoadedTexture(texture) {
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);

gl.bindTexture(gl.TEXTURE_2D, texture);

//CRASHES ON THIS NEXT LINE
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.image);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST);
gl.generateMipmap(gl.TEXTURE_2D);

gl.bindTexture(gl.TEXTURE_2D, null);
}

谢谢你的智慧!

最佳答案

问题是 this,在那个“加载”处理程序中,将不是您需要的。

相反,在设置处理程序之前将其填充到一个临时变量中:

var theStarship = this;
starshipImage.onload = function () {
handleLoadedTexture(theStarship.starshipTexture)
};

关于Javascript:为什么 "texture"参数未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8205423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com