私は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オブジェクトを作成するときにグローバルコンテキストの作成を強制する必要がありますか?