簡體   English   中英

獲取WebGL紋理/緩沖區/着色器數量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM