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
664 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!

sumber:php.cn
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