Maison > développement back-end > C++ > le corps du texte

Comment restituer un cadre OpenGL dans un formulaire C Builder ?

Mary-Kate Olsen
Libérer: 2024-10-25 04:08:02
original
579 Les gens l'ont consulté

How to Render an OpenGL Frame Within a C   Builder Form?

Rendu d'un cadre OpenGL dans C Builder

Lors de la personnalisation d'un formulaire C Builder avec OpenGL, il est courant de rencontrer des problèmes lors de la copie directe du code de démarrage OpenGL à partir de ressources en ligne. Pour ceux qui utilisent C Builder, voici un guide détaillé pour restituer un cadre OpenGL dans un formulaire :

Initialisation

  1. Dans l'en-tête de la classe du formulaire, définissez l'utilisateur- membres définis comme suit :
<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>
Copier après la connexion
  1. Créez une minuterie avec un intervalle de 20 à 40 millisecondes.
  2. Dans les événements du formulaire (par exemple, redimensionner, repeindre, minuterie ), ajoutez un code similaire au suivant :
<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>
Copier après la connexion

Initialisation OpenGL

  1. Dans la fonction ogl_init(), effectuez les étapes suivantes :
<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>
Copier après la connexion

Rendu OpenGL

  1. Dans la fonction ogl_draw(), créez et dessinez un objet primitif (par exemple, un quad) :
<code class="cpp">glBegin(GL_QUADS);
...
glEnd();</code>
Copier après la connexion

Notes supplémentaires

  • N'oubliez pas d'inclure fichier d'en-tête.
  • Vous pouvez utiliser TForm::Handle comme handle de fenêtre lors de l'initialisation d'OpenGL.
  • Cet exemple montre un simple quad vert au centre du formulaire.
  • Pour des fonctionnalités OpenGL plus avancées (par exemple, GLSL, VAO/VBO), reportez-vous aux ressources supplémentaires en ligne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!