小编Bra*_*mie的帖子

重载新/删除

我在我的程序中制作了一个小内存泄漏查找程序,但我的方法是重载new和delete(以及new []和delete [])似乎没有做任何事情.

void* operator new (unsigned int size, const char* filename, int line)
{
    void* ptr = new void[size];
    memleakfinder.AddTrack(ptr,size,filename,line);
    return ptr;
}
Run Code Online (Sandbox Code Playgroud)

我重载的方式new显示在上面的代码片段中.我想这是操作员返回void*的东西,但我不知道该怎么办.

c++ operator-overloading new-operator delete-operator

24
推荐指数
4
解决办法
7万
查看次数

收缩矢量

我的地形引擎有问题(使用DirectX).

我正在使用矢量来保存细节块的顶点.当块增加细节时,向量就会增加.

但是,当块减少其细节时,矢量的大小不会缩小.

所以,我的问题是:有没有办法缩小向量的大小?我试过这个:

vertexvector.reserve(16);
Run Code Online (Sandbox Code Playgroud)

c++ stl vector

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

glDeleteBuffers比glBufferData慢

我的iOS/Android游戏中存在一些性能问题,其中几个VBO必须每隔一段时间更新一次.在对我的游戏进行概要分析后,结果表明glDeleteBuffers()每次VBO更新最多需要7ms.当帧通常仅需要4毫秒来渲染时,这当然会导致打嗝.

这是我更新VBO的部分:

Chunk* chunk;
pthread_join(constructionThread, (void**)&chunk);
building = false;

if (vboID)
{
    //takes 7 milliseconds
    glDeleteBuffers(1, &vboID); 
    vboID = 0;
}
if (offset)
{
    glGenBuffers(1, &vboID);
    glBindBuffer(GL_ARRAY_BUFFER, vboID);

    //takes about 1-2 milliseconds, which is acceptable
    glBufferData(GL_ARRAY_BUFFER, offset * 4, constructionBuffer, GL_STATIC_DRAW);
}
Run Code Online (Sandbox Code Playgroud)

其中offset是一个实例变量,基本上是新VBO的大小,它是非常可变的.我想,vboID不言自明;)

c++ opengl-es

3
推荐指数
1
解决办法
3183
查看次数

在python中导入C++类?

所以...让我说我有这个C函数:

PyObject* Foo(PyObject* pSelf, PyObject* pArgs)
{
    MessageBox(NULL, "Foo was called!", "Info", MB_OK);
    return PyInt_FromLong(0);
}
Run Code Online (Sandbox Code Playgroud)

然后,我必须这样做:

static PyMethodDef Methods[] = 
{
    {"Foo", Foo, METH_NOARGS, "Dummy function"},
    {NULL, NULL, 0, NULL}
};
Py_InitModule("bar", Methods);
Run Code Online (Sandbox Code Playgroud)

我执行我的python脚本..但C函数有点烦人,它是C++,我几乎所有东西都使用类.

那么,有没有办法将成员函数从类导入到我的python脚本?

哦顺便说一句,python脚本看起来像这样:

import bar
from bar import *
Foo()
Run Code Online (Sandbox Code Playgroud)

c++ python

0
推荐指数
1
解决办法
3223
查看次数