«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как визуализировать кадр OpenGL в форме C++ Builder с помощью TForm::Handle?

Как визуализировать кадр OpenGL в форме C++ Builder с помощью TForm::Handle?

Опубликовано 7 ноября 2024 г.
Просматривать:591

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

Визуализация фрейма OpenGL в C Builder

Вопрос

Я хочу визуализировать фрейм OpenGL в форме в C Builder, но я возникли проблемы при использовании предоставленного кода запуска OpenGL. Как я могу решить эту проблему?

Ответ

Использование TForm::Handle в качестве дескриптора окна

Решение заключается в использовании TForm::Handle в качестве дескриптор окна.

Пример реализации

Вот пример, адаптированный из старой версии C Builder:

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;
}

Дополнительные примечания

  • Включите необходимые заголовки: и
  • Создайте таймер для запуска рендеринга.
  • Обработка событий для изменения размера формы, перерисовки и ввода с помощью колесика мыши.
  • Убедитесь, что gl.h включен в проект.
  • См. предоставлены ссылки на более продвинутые методы OpenGL.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3