Opengl es mipmap纹理显示错误

Opengl es mipmap纹理显示错误,opengl-es,dart,webgl,dart-html,Opengl Es,Dart,Webgl,Dart Html,我在webgl allready上做了很多工作,但现在是第一次使用dart,我遇到了一个奇怪的错误。我创建一个默认纹理,如下所示: GlTexture(){ mTexture=gl.createTexture(); updateMemory(1,1,新的Uint8List.fromList([0x00,0x00,0xFF,0xFF]); } updateMemory的作用是: void updateMemory(int-width、int-height、uint8列表颜色,[bool-genM

我在webgl allready上做了很多工作,但现在是第一次使用dart,我遇到了一个奇怪的错误。我创建一个默认纹理,如下所示:

GlTexture(){
mTexture=gl.createTexture();
updateMemory(1,1,新的Uint8List.fromList([0x00,0x00,0xFF,0xFF]);
}
updateMemory的作用是:

void updateMemory(int-width、int-height、uint8列表颜色,[bool-genMipMaps=true]){
gl.bindTexture(纹理2D,纹理);
gl.texImage2DTyped(纹理2D,0,RGBA,宽度,高度,0,RGBA,无符号字节,颜色);
if(genMipMaps){
gl.generateMipmap(纹理_2D);
}
gl.bindTexture(纹理为2D,空);
}
该纹理被完美渲染为蓝色正方形。但是,如果我将updateMemory调用更改为除1x1纹理之外的任何内容,则结果完全错误,让我向您展示一个示例:

GlTexture(){
mTexture=gl.createTexture();
updateMemory(2,2,新的Uint8List.fromList([0x00,0xFF,0x00,0xFF,0x00,0xFF,0xFF,0x00,0x00,0xFF,0x3F,0x7F,0xFF,0xFF]),true);
gl.bindTexture(纹理2D,纹理);
gl.texParameteri(纹理2D、纹理最小过滤器、线性MIPMAP最近);
gl.bindTexture(纹理为2D,空);
}
结果如下所示:

虽然2x2结构是可见的,但其余的完全是错误的。如果有必要,我也可以提供着色器

/编辑: 将纹理设置为图像内容时,渲染效果如下所示:


纹理本身渲染正确,但mip级别有点错误。

假设代码正在执行代码中的
generateMipMap
流,则生成MIPMap。纹理贴图过滤器设置如何?此外,CSS缩放可能存在与GL视口大小和CSS尝试最终缩放到显示的内容相关的问题


编辑:具体来说,您是否将画布的宽度/高度设置为与最终显示的宽度/高度相匹配?

虽然我仍然无法使2x2纹理正常工作,但第二个问题确实是由画布的内部错误引起的。在CSS和我的代码中进行了一些更改之后,宽度/高度似乎被正确传递,因此投影矩阵是正确的。