我写了一些这样的代码:
\n\nshared_ptr<int> r = make_shared<int>();\nint *ar = r.get();\n\ndelete ar; // report double free or corruption\n// still some code\nRun Code Online (Sandbox Code Playgroud)\n\n当代码运行到 时delete ar;,程序崩溃,并报告\xe2\x80\x8b“双重释放或损坏”,我很困惑为什么双重释放?“r”仍然在范围内,并且没有从堆栈中弹出。删除操作符有什么神奇的作用吗?它是否知道原始指针当前由智能指针处理?然后“r”中的计数器自动减为零?\n我知道不推荐操作\xef\xbc\x8c,但我想知道为什么?
我希望场景中的精灵在相机放大或缩小时不会改变大小.精灵使用不同的画布纹理作为材质.
我发现ParticleBasicMatierial中的sizeAttenuation对我有用.但是如果我使用WenGLRenderer,我必须使用ParticleSystem而不是使用CanvasRenderer的Particle.
我目前使用ParticleSystem只包含一个顶点,每个顶点对应一个ParticleSystem,所以我的场景中有大约800多个ParticleSystem,这可以工作,但是消耗很多.
显然,我不能使用"HUD"作为three.js源代码中的例子,因为精灵都在3D场景中.
有人能帮我吗.或者将sizeAttenuation添加到Sprite材质!谢谢!