我正在研究更高分辨率總是更好的應用程序。是否可以使用WebGL max紋理大小?
但我堅持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:loseContext:上下文丟失
而當我用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);
好的,謝謝,我錯過了這個最大值的含義。這實際上是有道理的。但我應該如何去尋找適合內存的最大紋理尺寸(有一定的餘量)我猜標籤是在沙箱中運行的,並且無法猜測它們的可用內存? – mrudelle
即使它們未在沙箱中運行,您如何知道它們沒有在每個選項卡中使用WebGL應用程序打開的50個選項卡?除了分配逐漸變大的紋理和祈禱之外,我確實沒有辦法知道。如果你正在製作一個應用程序,儘量使用盡可能少的內存/合理的內存。你可能會看到'navigator.platform'猜測一點,至少移動與桌面。否則,請考慮爲用戶提供喜歡大多數PC遊戲的細節與低細節的選項。 – gman
對不起,但我認爲這可能是一個錯誤。從Khronos規範: 「對於1D和2D紋理(以及任何使用類似維度的紋理類型,如立方圖),其最大尺寸爲E_MAX_TEXTURE_SIZE。」 – Jackalope