【发布时间】:2016-12-22 17:47:58
【问题描述】:
我正在开发一款分辨率越高越好的应用。
但我遇到了 WebGL max_texture_size 问题。我创建了一个尺寸正好是这个尺寸的图像(我的笔记本电脑上是 16384x16384),WebGL 崩溃说:
GL_INVALID_ENUM : glBindFramebuffer: 目标是 GL_READ_FRAMEBUFFER_ANGLE GL_INVALID_ENUM : glBindFramebuffer: 目标是 GL_READ_FRAMEBUFFER_ANGLE WebGL:CONTEXT_LOST_WEBGL:looseContext:上下文丢失
当我尝试使用 0.75 个最大值时也会发生同样的情况。只能以最大分辨率的一半工作,但这意味着我的图形内存中只有 1/4 的像素被使用!
所以我的问题是是否可以使用最大纹理大小,如果不能,如何找到 WebGL 可以吃的最大纹理?我在网上找到的关于这个的文档很少(如果有的话)。
以防万一,这是我绑定纹理的方法:
gl.activeTexture(glTexture);
texture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, texture);
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
with(gl){
texParameteri(TEXTURE_2D, TEXTURE_MAG_FILTER, LINEAR);
texParameteri(TEXTURE_2D, TEXTURE_MIN_FILTER, NEAREST);
texParameteri(TEXTURE_2D, TEXTURE_WRAP_S, CLAMP_TO_EDGE);
texParameteri(TEXTURE_2D, TEXTURE_WRAP_T, CLAMP_TO_EDGE);
}
program.samplerUniform = gl.getUniformLocation(program, textureName);
gl.uniform1i(program.samplerUniform, textureNb);
【问题讨论】:
标签: javascript browser textures webgl