小编cza*_*a91的帖子

WebGL纹理创建麻烦

我正在编写光线跟踪程序,主要思想是将三角形和.obj模型的索引保存为2个纹理:

a)顶点纹理b)指数纹理

我这样做是为了在我的GLSL片段着色器中做一个光线三角形交叉,浏览器告诉我,我有纹理的这个问题:

a)Mozilla Firefox:

错误#1(带顶点纹理):错误:WebGL:texImage2D:无效类型0x1406.

错误#2(带索引纹理):错误:WebGL:texImage2D:无效类型0x1403.

b)谷歌浏览器:

两种纹理都出错:webgl invalid_enum teximage2d无效的纹理类型

这是代码:

Obj.prototype.initTextures = function(){

this.vertexTexture = gl.createTexture();
gl.activeTexture(gl.TEXTURE0)
gl.bindTexture(gl.TEXTURE_2D, this.vertexTexture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, this.vertexSize, 1, 0, gl.RGB, gl.FLOAT, new Float32Array(this.vertexArray));
gl.bindTexture(gl.TEXTURE_2D, null);

this.trianglesTexture = gl.createTexture();
gl.activeTexture(gl.TEXTURE1);
gl.bindTexture(gl.TEXTURE_2D, this.trianglesTexture);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB, this.faceSize, 1, 0, gl.RGB,  gl.UNSIGNED_SHORT, …
Run Code Online (Sandbox Code Playgroud)

javascript firefox google-chrome opengl-es webgl

2
推荐指数
1
解决办法
2979
查看次数

标签 统计

firefox ×1

google-chrome ×1

javascript ×1

opengl-es ×1

webgl ×1