小编vir*_*obi的帖子

许多画布对象导致"InvalidStateError:尝试使用不可用或不再可用的对象"

试图在a上管理10.000个简单形状<canvas>,我尝试使用缓存作为重绘的替代品.令我惊讶的是:

  • 使用ImageData并且canvas.{get|put}Image看起来非常慢.
  • 缓存模式canvas.createPattern几乎与重绘一样快.
  • 为每个形状缓存整个画布甚至比重绘更快.

然而,出于某种原因,一些画布在缓存期间会中断.在一些查找之后,以不规则的间隔(每2-5次高速缓存查找),检索一个导致一个画布的画布

InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable
Run Code Online (Sandbox Code Playgroud)

被抛出 我使用相同的代码来缓存不同的对象,所以我认为问题不是缓存,而是canvas对象的数量.

也许我感兴趣的是我将形状设置为(0,0),将它们的大小减小到零.例如,即使矩形是6x3px大,也会发生错误,所以它不应该是关于大小调整的.

任何的想法?如果没有立竿见影的想法,我会简化发布的代码.谢谢,nobi

javascript performance html5 caching canvas

12
推荐指数
2
解决办法
9245
查看次数

如何将纹理数组绑定到WebGL着色器统一?

我需要处理许多只共享少量纹理的对象.手动定义和加载纹理(如SO上的另一篇文章中所述)感觉不对......更是如此,因为switch (index) {case:...}WebGL中没有任何语句.

所以我想传递纹理以用作顶点属性的顶点,并使用此数字作为fragement着色器中某些"纹理数组"的索引.但是采样器上OpenGL wiki(不是WebGL的完美参考,但是我找到的那个)说:

采样器的变量只能以两种方式之一定义.它可以定义为函数参数或统一变量.

均匀采样器2D纹理1;

那对我来说听起来像我可以没有采样器阵列.我已经阅读了几页纹理单元,但直到现在,这对我来说仍然是一个谜.

在上面引用的SO帖子中,Toji暗示了一个解决方案,但想要一个单独的问题 - 瞧!

谢谢,nobi

PS:我知道使用"纹理图集"的另一种可能性 - 如果这更有效或更简单 - 我会很高兴听到经验!

textures webgl

7
推荐指数
1
解决办法
7428
查看次数

如何使用Python 2.7安装aggdraw

我想在Python 2.7中使用aggdraw.(这是一个愚蠢的想法吗?我已经看到一个很好的aggdraw示例,但我不想回归到Python 2.6.是否有一个使用Python 2.7的等效绘图库?)我安装了Python 2.7.8 64bit Windows 7企业版SP 1 64位.

http://www.effbot.org/downloads#aggdraw的安装程序抱怨Python 2.6缺失,并python setup.py install抱怨缺少vcvarsall.bat.

因此,在此处的所有相关帖子之后,我从http://www.microsoft.com/en-us/download/details.aspx?id=44266安装了MS编译器.这是明显的,在"程序和功能"列表中,我有一个vcvarsall.batC:\Users\d031475\AppData\Local\Programs\Common\Microsoft\Visual C++ for Python\9.0现在.

但是,它python setup.py install既不直接在CMD中运行,也不MS Visual... Compiler for Python 2.7在我的"开始"菜单中出现的命令提示符中运行.它仍然抱怨失踪vcvarsall.bat.

编辑:即使我将相关目录附加到我的路径,以便我可以从命令行运行vcvarsall.bat,python setup.py install仍然抱怨它找不到它.这有多奇怪?

python install python-2.7 aggdraw

5
推荐指数
1
解决办法
2544
查看次数