Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Membuat Bingkai OpenGL Dalam Borang C Builder?

Bagaimana untuk Membuat Bingkai OpenGL Dalam Borang C Builder?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-25 04:08:02580semak imbas

How to Render an OpenGL Frame Within a C   Builder Form?

Memberikan Bingkai OpenGL dalam C Builder

Semasa menyesuaikan borang C Builder dengan OpenGL, adalah perkara biasa untuk menghadapi masalah apabila menyalin terus kod permulaan OpenGL daripada sumber dalam talian. Bagi mereka yang menggunakan C Builder, berikut ialah panduan terperinci untuk menghasilkan bingkai OpenGL dalam borang:

Inisialisasi

  1. Dalam pengepala kelas borang, tentukan pengguna- mentakrifkan ahli seperti berikut:
<code class="cpp">int xs, ys;
HDC hdc;            // device context
HGLRC hrc;            // rendering context
int ogl_inicialized;
int ogl_init();
void ogl_exit();
void ogl_draw();
void ogl_resize();</code>
  1. Buat pemasa dengan selang 20-40 milisaat.
  2. Dalam acara borang (cth., ubah saiz, cat semula, pemasa ), tambah kod yang serupa dengan yang berikut:
<code class="cpp">void __fastcall TForm1::FormResize(TObject* Sender)
{
    ogl_resize();
}

void __fastcall TForm1::FormPaint(TObject* Sender)
{
    ogl_draw();
}

void __fastcall TForm1::Timer1Timer(TObject* Sender)
{
    ogl_draw();
}</code>

OpenGL Initialization

  1. Dalam fungsi ogl_init(), lakukan langkah berikut:
<code class="cpp">hdc = GetDC(Form1->Handle);             // get device context

PIXELFORMATDESCRIPTOR pfd;
ZeroMemory(&pfd, sizeof(pfd));      // set the pixel format for the DC
...

if(wglMakeCurrent(hdc, hrc) == false)
{
    ShowMessage("Could not make current OpenGL Rendering context !!!");
    wglDeleteContext(hrc);          // destroy rendering context
    ogl_inicialized=0;
    return 0;
}
...</code>

Penyampaian OpenGL

  1. Dalam fungsi ogl_draw(), cipta dan lukis objek primitif (cth., quad):
<code class="cpp">glBegin(GL_QUADS);
...
glEnd();</code>

Nota Tambahan

  • Ingat untuk sertakan fail pengepala.
  • Anda boleh menggunakan TForm::Handle sebagai pemegang tetingkap semasa memulakan OpenGL.
  • Contoh ini menunjukkan quad hijau ringkas di tengah-tengah borang.
  • Untuk kefungsian OpenGL yang lebih maju (cth., GLSL, VAO/VBO), rujuk sumber tambahan dalam talian.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Bingkai OpenGL Dalam Borang C Builder?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn