C Builder を使用して VCL フォーム内で OpenGL フレームをレンダリングする方法
C Builder フォーム内で OpenGL フレームをレンダリングするには、次のことができます。次の手順に従います:
1.フォームのコンストラクターで OpenGL を初期化します:
<code class="cpp">// Declare variables in form's private section int xs, ys; HDC hdc; HGLRC hrc; int ogl_initialized; // Initialize OpenGL in form constructor ogl_initialized = 0; hdc = NULL; hrc = NULL; ogl_init();</code>
2.フォーム イベント ハンドラをオーバーライドします:
サイズ変更、ペイント、マウス スクロールなどのフォーム イベントを処理して、対応する OpenGL 関数を呼び出します:
3. OpenGL 関数の定義:
ogl_init、ogl_exit、ogl_draw などの関数を実装して、OpenGL の初期化、クリーンアップ、描画タスクを実行します。
例:
以下のコードは、C Builder フォームで OpenGL を使用して基本的な緑色のクワッドをレンダリングします。
<code class="cpp">void TForm1::ogl_init() { if (ogl_initialized) return; hdc = GetDC(Handle); // Get device context // Set pixel format and create rendering context hrc = wglCreateContext(hdc); if (hrc == NULL) MessageBox(L"Could not initialize OpenGL!", L"Error", MB_OK); if (!wglMakeCurrent(hdc, hrc)) MessageBox(L"Could not set OpenGL context!", L"Error", MB_OK); ogl_resize(); ogl_initialized = 1; } void TForm1::ogl_draw() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBegin(GL_QUADS); glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(-0.5f, -0.5f, -20.0f); glVertex3f(-0.5f, 0.5f, -20.0f); glVertex3f(0.5f, 0.5f, -20.0f); glVertex3f(0.5f, -0.5f, -20.0f); glEnd(); glFlush(); SwapBuffers(hdc); }</code>
4.タイマーの追加:
タイマーは、OpenGL フレームの定期的な再描画をトリガーするために使用されます。たとえば、フォームの OnCreate イベントにタイマー間隔を 20 ~ 40 ミリ秒に設定します:
<code class="cpp">Timer1->Interval = 20; Timer1->Enabled = true;</code>
5。タイマー イベントの処理:
タイマーの OnTimer イベント ハンドラーで、ogl_draw を呼び出して OpenGL フレームを再描画します。
これらの手順に従うことで、VCL 内で OpenGL フレームを初期化してレンダリングできます。 C Builder のフォームを使用して、インタラクティブで没入型の 3D グラフィックス アプリケーションを開発するためのプラットフォームを提供します。
以上がOpenGL レンダリングを C Builder VCL フォームに統合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。