Maison  >  Article  >  développement back-end  >  Comment restituer un cadre OpenGL dans un formulaire C Builder ?

Comment restituer un cadre OpenGL dans un formulaire C Builder ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-25 04:08:02580parcourir

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

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>

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>

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!

Déclaration:
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