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

Bagaimana untuk Membuat Bingkai OpenGL Dalam Borang C Builder?

Mary-Kate Olsen
Lepaskan: 2024-10-25 04:08:02
asal
699 orang telah melayarinya

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>
Salin selepas log masuk
  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>
Salin selepas log masuk

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>
Salin selepas log masuk

Penyampaian OpenGL

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

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan