[英]Get WebGL texture/buffer/shader count
有沒有一種方法可以獲取WebGL上下文當前存在的紋理,緩沖區或着色器的計數? 就像查看about:memory
一樣,您可以在Firefox中獲得數字。
我想檢查在我的應用程序關閉時是否已成功刪除所有這些文件。
無法直接從WebGLRenderingContext獲取該信息,但是您可以輕松地自己添加上下文,例如
var numTextures = 0;
var originalCreateTextureFn = gl.createTexture;
var originalDeleteTextureFn = gl.deleteTexture;
gl.createTexture = function() {
++numTextures;
return originalCreateTextureFn.call(gl);
};
gl.deleteTexture = function(texture) {
--numTextures;
originalDeleteTextureFn.call(gl, texture);
};
您可以為其他資源編寫類似的功能。
當然,如果您想變得完美,則可能需要向每個對象添加一個標志,以防萬一您嘗試刪除兩次,並檢查傳入的對象是否正確。 就像是
var numTextures = 0;
var originalCreateTextureFn = gl.createTexture;
var originalDeleteTextureFn = gl.deleteTexture;
gl.createTexture = function() {
++numTextures;
var texture = originalCreateTextureFn.call(gl);
texture.__deleted__ = false;
};
gl.deleteTexture = function(texture) {
if (texture && texture instanceof WebGLTexture && !texture.__deleted__) {
texture.__deleted__ = true;
--numTextures;
}
originalDeleteTextureFn.call(gl, texture);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.