質問

これはかなり初心者の質問ですが、OpenGLで複雑な形状をレンダリングすることを考えると、多くの計算が必要な場合は、とにかくそれを再び編集しないと後で再び開くことができるモデルのような状態にそれをエクスポートするためにありますか?

プログラムの開始時に形状が計算されるため、プログラムの外側(ブレンダーのようなものを使用して)外で作成することはできません。その後、レンダリングは翻訳、回転、描画などです。ただし、形状を編集する必要はないことに注意してください。しかし、3D状態でそれを望んでいるので、画像を保存することはオプションではありません。

opentk 1.0、vb.net(.net 4)を使用しています

役に立ちましたか?

解決

明らかな可能性は、頂点をファイルに書き込み、必要に応じて再ロードすることです。特に具体的な理由がない限り、おそらくこれには多くの既存のファイル形式のいずれかを使用するのが最善です。 波面obj, 、ogre3d メッシュXML ファイル、 .

他のヒント

これは、OpenGLディスプレイリストにとって理想的な状況のように聞こえます。それらを使用する方法は、最初にOpenGLに表示リストIDを使用するように依頼することです。

GLuint draw_id = glGenLists(1);

(一度にいくつかの連続IDを要求することはできますが、この場合、1つだけを求めています)次に、初めて抽選ルーチンを通して、GlnewListに電話してください。

glNewList(draw_id, GL_COMPILE);
<do compute intensive drawing here>
glEndList();

これは実際には形状をレンダリングしないことに注意してください(glnewlistでgl_compile_and_executeを使用できます。 意思 あなたの形をレンダリングしますが、それは一般的に落胆しています)

今、あなたがあなたのオブジェクトを描く必要があるときはいつでも:

< set up your OpenGL matrices >
glCallList(draw_id);

そして最後に、あなたがそれを終えたとき、あなたはgldeletelistsを使用することができます。

ディスプレイリストは、いくつかの最適化を実行できるため、実際にレンダリングをスピードアップできます。すべての関数呼び出しオーバーヘッドが削除されます。

現在、技術的には、OpenGL 3.0以上ではOpenGLディスプレイリストが廃止されています(ただし、削除されていません!)(Gltranslate、Glvertex Glbegin ... grrr)が、予見可能な将来のために機能するはずです。将来の証明になるには、頂点配列を使用する必要がありますが、それはかなり複雑です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top