我正在尝试编写 OpenVG 的 C++ 包装器,它的设计非常类似于 Open-GL。这是一个简单的路径句柄包装器:
class Path {
VGPath handle;
public:
Path() :
handle(vgCreatePath(VG_PATH_FORMAT_STANDARD, VG_PATH_DATATYPE_F,
1,0,0,0, VG_PATH_CAPABILITY_ALL))
{
std::cout << "Path Handle created : " << (void*)handle << '\n';
}
~Path() {
std::cout << "Path destroyed : " << (void*)handle << '\n';
vgDestroyPath(handle);
}
};
不幸的是,openVG 需要一个上下文才能运行,如果vgCreatePath
在没有 openVG 上下文的情况下调用它,它将中止。这使我无法在我的代码中创建(出于测试目的)全局 Path 对象对象,因为它是在我创建 openVG 上下文之前构建的(我主要这样做)。有什么办法可以防止这种情况发生吗?
我认为在对象构造时将句柄统一化是一个非常糟糕的主意......如果没有上下文,我应该在创建 Path 对象时强制创建全局上下文吗?