Comment restituer un cadre OpenGL dans un formulaire VCL avec C Builder
Pour restituer un cadre OpenGL dans un formulaire C Builder, vous pouvez suivez ces étapes :
1. Initialisez OpenGL dans le constructeur du formulaire :
<code class="cpp">// Declare variables in form's private section int xs, ys; HDC hdc; HGLRC hrc; int ogl_initialized; // Initialize OpenGL in form constructor ogl_initialized = 0; hdc = NULL; hrc = NULL; ogl_init();</code>
2. Remplacer les gestionnaires d'événements de formulaire :
Gérer les événements de formulaire tels que le redimensionnement, la peinture et le défilement de la souris pour appeler les fonctions OpenGL correspondantes :
3. Définir les fonctions OpenGL :
Implémentez des fonctions telles que ogl_init, ogl_exit et ogl_draw pour effectuer des tâches d'initialisation, de nettoyage et de dessin OpenGL.
Exemple :
Le code ci-dessous restitue un quad vert de base en utilisant OpenGL dans un formulaire C Builder :
<code class="cpp">void TForm1::ogl_init() { if (ogl_initialized) return; hdc = GetDC(Handle); // Get device context // Set pixel format and create rendering context hrc = wglCreateContext(hdc); if (hrc == NULL) MessageBox(L"Could not initialize OpenGL!", L"Error", MB_OK); if (!wglMakeCurrent(hdc, hrc)) MessageBox(L"Could not set OpenGL context!", L"Error", MB_OK); ogl_resize(); ogl_initialized = 1; } void TForm1::ogl_draw() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBegin(GL_QUADS); glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(-0.5f, -0.5f, -20.0f); glVertex3f(-0.5f, 0.5f, -20.0f); glVertex3f(0.5f, 0.5f, -20.0f); glVertex3f(0.5f, -0.5f, -20.0f); glEnd(); glFlush(); SwapBuffers(hdc); }</code>
4. Ajouter une minuterie :
Une minuterie est utilisée pour déclencher un redessinage régulier du cadre OpenGL. Par exemple, définissez un intervalle de minuterie de 20 à 40 millisecondes dans l'événement OnCreate du formulaire :
<code class="cpp">Timer1->Interval = 20; Timer1->Enabled = true;</code>
5. Gérer l'événement Timer :
Dans le gestionnaire d'événements OnTimer du timer, appelez ogl_draw pour redessiner le cadre OpenGL.
En suivant ces étapes, vous pouvez initialiser et restituer un cadre OpenGL dans une VCL. form dans C Builder, fournissant une plate-forme pour développer des applications graphiques 3D interactives et immersives.
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!