Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Membuat Bingkai OpenGL dalam Borang C Builder Menggunakan TForm:: Handle?

Bagaimana untuk Membuat Bingkai OpenGL dalam Borang C Builder Menggunakan TForm:: Handle?

Patricia Arquette
Patricia Arquetteasal
2024-10-25 04:38:29569semak imbas

How to Render an OpenGL Frame in a C   Builder Form Using TForm::Handle?

Memberikan Bingkai OpenGL dalam C Builder

Soalan

Saya mahu memaparkan bingkai OpenGL dalam bentuk dalam C Builder, tetapi saya menghadapi masalah apabila mengikuti kod permulaan OpenGL yang disediakan. Bagaimanakah saya boleh menyelesaikan masalah ini?

Jawapan

Menggunakan TForm::Handle sebagai Window Handle

Penyelesaian terletak pada penggunaan TForm::Handle sebagai pemegang tingkap.

Sampel Pelaksanaan

Berikut ialah contoh yang disesuaikan daripada versi lama C Builder:

<code class="cpp">int TForm1::ogl_init()
{
    if (ogl_inicialized)
        return 1;
    hdc = GetDC(Form1->Handle); // Get device context
    PIXELFORMATDESCRIPTOR pfd;
    // Set pixel format for the DC
    ...
    // Create current rendering context
    hrc = wglCreateContext(hdc);
    if (hrc == NULL)
    {
        ShowMessage("Could not initialize OpenGL Rendering context !!!");
        ogl_inicialized = 0;
        return 0;
    }
    if (!wglMakeCurrent(hdc, hrc))
    {
        wglDeleteContext(hrc); // Destroy rendering context
        ogl_inicialized = 0;
        return 0;
    }
    // ...
    ogl_inicialized = 1;
    return 1;
}</code>

Nota Tambahan

  • Sertakan pengepala yang diperlukan: dan
  • Buat pemasa untuk mencetuskan pemaparan.
  • Kendalikan acara untuk mengubah saiz borang, mengecat semula dan input roda tetikus.
  • Pastikan gl. h disertakan dalam projek.
  • Rujuk pautan yang disediakan untuk teknik OpenGL yang lebih maju.

Atas ialah kandungan terperinci Bagaimana untuk Membuat Bingkai OpenGL dalam Borang C Builder Menggunakan TForm:: Handle?. 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