はじめに
中間バージョン20.2以降、ODA SDKには再編成された視覚化モジュールが含まれています。
新しい視覚化モジュール構造は、ODA SDKの柔軟性を向上させ、アプリケーション開発中の機会を増やします。たとえば、データベースを含まないがレンダリングを必要とするアプリケーションを構築する場合、レンダリングモジュールを直接呼び出すことができます。さらに、レンダリングモジュールの分岐を呼び出して、異なるレンダリングモジュールに同時にグラフィックを出力できるようになりました。既存のデータベースを描画するためにアプリケーションがベクトル化モジュールを呼び出すという古典的なユースケースは変更されず、以前のODA SDKバージョンと同様に使用できますが、新しいモジュール構造は新しいアプリケーションにさらなる可能性をもたらします。
この記事では、視覚化モジュールとライブラリのセット、アプリケーションをそれらと正しくリンクする方法、およびこれらのモジュールをロードする方法について説明します。
視覚化モジュールマップ
- 灰色の長方形 — 必須の静的ライブラリ。
- 青色の長方形 — 視覚化アプリケーションに必要な主要モジュール。
- 緑色の長方形 — レンダリングストリームをXML形式にエクスポートするために必要なオプションモジュール。
- 角丸の長方形 — 異なる最終アプリケーション。
TrRenderBase.lib は、レンダリングモジュールを構築する場合にのみ必要です。エクスポートモジュール(この図のXMLエクスポートなど)は、その機能のためにこのライブラリを必要としません。
バージョン20.2以降のODA SDKへの変更点
- TrGL2.lib 静的ライブラリは TrGL2.txr レンダリングモジュールになります。
- TrRenderBase.lib は、OpenGL ES 2.0 レンダラーおよびベクタライザーによって呼び出される新しい静的ライブラリです。
- TrXml.txr は、レンダリングストリームをXMLファイル形式にエクスポートするために必要な新しいレンダリングモジュールです。
- XmlGLES2.txv ベクタライゼーションモジュールは TrXmlVec.tx 拡張モジュールになります。
最終アプリケーションが OpenGL ES 2.0 レンダリングのみを呼び出す場合は、最初の2つの項目のみを考慮してください。最終アプリケーションがXMLエクスポート機能を呼び出す場合は、最後の2つの項目を考慮してください。
注: 静的ライブラリ構成では、すべての動的ライブラリ(.tx、.txv、.txr)が最終アプリケーションとリンクされるべき静的ライブラリになることを忘れないでください。WinGLES2 ベクタライゼーションモジュールが内部的に TrGL2 レンダリングモジュールを呼び出すようになったため、静的ライブラリ構成では、アプリケーションは新しいレンダリングモジュールを静的モジュールマップに登録する必要があります(この変更については、この記事の後半の「静的ライブラリ構成」で説明されています)。
視覚化モジュールの説明
| モジュール名 | モジュールタイプ | 説明 |
|---|---|---|
| TrBase.lib | 静的ライブラリ | すべての視覚化関連ライブラリおよびモジュールで使用される一般的な関数とクラスを含むライブラリ。 |
| TrRenderBase.lib | 静的ライブラリ | レンダリングモジュールを構築するための一般的な関数とクラスを含むライブラリ。 |
| TrVec.lib | 静的ライブラリ | ベクタライゼーションモジュールを構築するために必要なすべての機能を含む基本ライブラリ。 |
| TrGL2.txr | レンダリングモジュール | OpenGL ES 2.0 レンダラー。 |
| WinGLES2.txv | ベクタライゼーションモジュール | OpenGL ES 2.0 ベクタライゼーションモジュール(Gsベースのアプリケーションでのレンダリングには TrGL2.txr を呼び出します)。 |
| TrXml.txr | レンダリングモジュール | XMLエクスポートモジュール。 |
| TrXmlVec.tx | 拡張 | ベクタライズされたデータをXML形式にエクスポートするために TrXml.txr レンダリングモジュールを呼び出すベクタライゼーションモジュール。 |
| TrXmlIO.lib | 静的ライブラリ | XML形式からベクタライズされたデータを開いて処理するアプリケーション(例: XMLデータをロードし、別のレンダリングモジュールを使用してレンダリングするアプリケーション)用のライブラリ。 |
動的ライブラリ構成
レンダリングモジュール
新しいレンダリングモジュールは、すべてのODA SDKベースのアプリケーションで利用可能なOdModuleNames.hヘッダーファイルで定義されています。
#define OdTrGL2ModuleName L"TrGL2.txr"
#define OdTrXmlModuleName L"TrXml.txr"
レンダリングモジュールは、次の呼び出し(動的モジュールリンカーを使用)を使用してロードできます。
OdTrRndRenderModulePtr pRenderModule = ::odrxDynamicLinker()->loadModule(OdTrGL2ModuleName);
ベクトル化モジュール
ベクトル化モジュールにも同じ定義が利用可能です。
#define OdWinGLES2ModuleName L"WinGLES2.txv"
#define OdTrXmlVecModuleName L"TrXmlVec.tx"
これらのモジュールは、他のベクトル化モジュールと同様にロードできます(以前のODA SDKバージョンからの変更はありません)。
OdGsModulePtr pGs = ::odrxDynamicLinker()->loadModule(OdWinGLES2ModuleName);
静的ライブラリ構成
ライブラリのリンク
TrGL2レンダラーとリンクするには、関連プロジェクトのCMakeLists.txtファイルに以下のライブラリセットを追加します。
${TR_TXR_GL2_LIB} ${TR_RENDER_LIB} ${TR_BASE_LIB}
WinGLES2ベクトル化モジュールとリンクするには、以下のライブラリセットをリンカーに追加します。
${TD_TXV_GLES2_LIB} ${TR_TXR_GL2_LIB} ${TR_RENDER_LIB} ${TR_VEC_LIB} ${TR_BASE_LIB}
この長いライブラリリストの追加を避けるために、特別なCMake定義が利用可能です。WinGLES2ベクトル化に必要なすべてのライブラリをリンクするには、$(TD_TXV_GLES2_LIBS} CMake定義のみを使用できます。
set(TD_TXV_GLES2_LIBS ${TD_TXV_GLES2_LIB} ${TR_TXR_GL2_LIB} ${TR_RENDER_LIB} ${TR_VEC_LIB} ${TR_BASE_LIB})
古いプロジェクトのために保持されている定義がもう1つあります。この定義は、廃止されたTrGL2.lib静的ライブラリを呼び出すWinGLES2ベクトル化モジュールとリンクします。
# for compatibility with old CMakeLists
set(TR_GL2_LIB ${TR_TXR_GL2_LIB} ${TR_RENDER_LIB})
したがって、古いプロジェクトがCMakeで非標準機能を呼び出さない場合、現在のところ関連するCMakeLists.txtファイルに特別な変更は必要ありません。しかし、廃止された$(TR_GL2_LIB}定義は将来削除される可能性があるため、使用を避けることをお勧めします。
TrXml.txrレンダリングモジュール(XMLエクスポート)とのリンクが必要なライブラリの場合:
${TR_TXR_XML_LIB} ${TR_BASE_LIB}
TrXmlVec.txとリンクするには、アプリケーションはリンクされたライブラリリストに以下のライブラリを必要とします。
${TR_XML_VEC_LIB} ${TR_TXR_XML_LIB} ${TR_VEC_LIB} ${TR_BASE_LIB}
静的モジュールマップ
アプリケーションがWinGLES2ベクトル化モジュールを呼び出す場合、新しいレンダリングモジュールも静的モジュールマップに登録する必要があります。
ODRX_DECLARE_STATIC_MODULE_ENTRY_POINT(OdTrGL2RenderModule);
ODRX_DECLARE_STATIC_MODULE_ENTRY_POINT(GLES2Module);
ODRX_BEGIN_STATIC_MODULE_MAP()
ODRX_DEFINE_STATIC_APPLICATION(OdTrGL2ModuleName, OdTrGL2RenderModule)
ODRX_DEFINE_STATIC_APPMODULE(OdWinGLES2ModuleName, GLES2Module)
ODRX_END_STATIC_MODULE_MAP()
WinGLES2.txvベクトル化モジュールのエントリポイントは、以前のバージョンと同様にGLES2Moduleです。TrGL2.txrの場合、レンダリングモジュールのエントリポイントはOdTrGL2RenderModuleです。
XMLエクスポートアプリケーションでも同様です。
ODRX_DECLARE_STATIC_MODULE_ENTRY_POINT(OdTrXmlRenderModule);
ODRX_DECLARE_STATIC_MODULE_ENTRY_POINT(TrXmlModule);
ODRX_BEGIN_STATIC_MODULE_MAP()
ODRX_DEFINE_STATIC_APPLICATION(OdTrXmlModuleName, OdTrXmlRenderModule)
ODRX_DEFINE_STATIC_APPLICATION(OdTrXmlVecModuleName, TrXmlModule)
ODRX_END_STATIC_MODULE_MAP()
TrXmlVec.tx(以前のXmlGLES2.txv)ベクトル化モジュールのエントリポイントは、以前のバージョンと同様にTrXmlModuleです。TrXml.txrの場合、レンダリングモジュールのエントリポイントはOdTrXmlRenderModuleです。