"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment restituer un cadre OpenGL dans un formulaire C++ Builder à l'aide de TForm::Handle ?

Comment restituer un cadre OpenGL dans un formulaire C++ Builder à l'aide de TForm::Handle ?

Publié le 2024-11-07
Parcourir:890

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

Rendu d'un cadre OpenGL dans C Builder

Question

Je souhaite restituer un cadre OpenGL dans un formulaire dans C Builder, mais je suis rencontrer des problèmes lors du suivi du code de démarrage OpenGL fourni. Comment puis-je résoudre ce problème ?

Réponse

Utiliser TForm::Handle comme handle de fenêtre

La solution réside dans l'utilisation de TForm::Handle comme handle de fenêtre. handle de fenêtre.

Exemple d'implémentation

Voici un exemple adapté d'une ancienne version de 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;
}

Notes supplémentaires

  • Inclure les en-têtes nécessaires : et
  • Créez un minuteur pour déclencher le rendu.
  • Gérez les événements pour le redimensionnement du formulaire, le repeint et la saisie avec la molette de la souris.
  • Assurez-vous que gl.h est inclus dans le projet.
  • Consultez le fourni des liens vers des techniques OpenGL plus avancées.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3