verxirtam / ATFViewer

FR24で取得したADS-Bなどのセンサデータをマップ上に表示する
0 stars 0 forks source link

コンストラクタでリソース確保をしていない #30

Open verxirtam opened 8 years ago

verxirtam commented 8 years ago

"handle”を持つクラス(Shader, ShaderProgram, VBO, VAO)で、 コンストラクタでリソース確保をせず、init()で行っている。 そのためhandleが有効か、2重にinit()実行しても エラーにならないかチェックする必要が出てしまっている。

原因: コンストラクタ実行時にGLのインスタンスが生成されていないため

対処法候補: GLを管理するクラスを作って、上記のクラスより先に初期化する。 (ATFViewerGLSLのメンバにし、上記のクラスより先(初期化リストの上)に初期化する)

verxirtam commented 7 years ago

取るべき対処法が悩ましい。 上の対処法だと、GLを管理するクラスのコンストラクタで、

まで行わなければならない。 上記の処理はinit()でやっていた。 コンストラクタにしては大きすぎる気がする。

将来、"handle”を持つクラス(Shader, ShaderProgram, VBO, VAO)を動的に変更することを考えると、この対策だとATFViewerGLSLのコンストラクタでしか初期化していないので難しい気がする。

むしろ、上記クラス達をポインタで持って、GLの初期化後に動的に確保したほうがいい気がする。 ただし、クラスたちは継承関係に無いので単純に仮想クラスポインタで保持するわけにはいかない。