Maison  >  Article  >  développement back-end  >  Le code d'initialisation et de sortie OpenGL actuel est-il adapté à Intel HD 3000 et existe-t-il de meilleures façons de gérer plusieurs contextes OpenGL ?

Le code d'initialisation et de sortie OpenGL actuel est-il adapté à Intel HD 3000 et existe-t-il de meilleures façons de gérer plusieurs contextes OpenGL ?

DDD
DDDoriginal
2024-10-28 10:11:02445parcourir

 Is the current OpenGL initialization and exit code suitable for Intel HD 3000, and are there better ways to manage multiple OpenGL contexts?

Quelle est l'initialisation OpenGL appropriée sur Intel HD 3000 ?

Problème :

Sur une carte graphique Intel HD 3000 , la création de plusieurs contextes OpenGL dans une seule application entraîne un comportement imprévisible :

  1. Les anciennes versions de l'application ne parviennent pas à créer un deuxième contexte de rendu.
  2. Après des modifications apportées au logiciel basé sur OpenGL , le deuxième contexte de rendu peut être créé mais devient invalide après la publication.

Initialisation actuelle et code de sortie :

<code class="c++">// Initialization code
int OpenGLscreen::init(void *f, int textures)
{
    // ...
    hrc = wglCreateContext(hdc);
    // ...
    if(wglMakeCurrent(hdc, hrc) == false)
        {
        // ...
        }
    // ...
}

// Exit code
void OpenGLscreen::exit()
{
    if (!_init) return;
    wglMakeCurrent(hdc,hrc);        // use this context if multiple OpenGLs are used
    // ...
    wglMakeCurrent(NULL, NULL);     // release current rendering context
    wglDeleteContext(hrc);          // destroy rendering context
    hrc=NULL;
    _init=0;
}</code>

Questions :

  1. Le code d'initialisation/sortie OpenGL actuel est-il incorrect ?
  2. Existe-t-il une meilleure façon d'initialiser et de quitter OpenGL ?
  3. Comment basculer correctement entre les différents contextes de rendu ?

Réponse :

  1. Le code d'initialisation et de sortie OpenGL actuel semble correct, mais l'utilisation d'une bibliothèque de chargement telle que GLEW est recommandée.
  2. Utilisez une bibliothèque de chargement telle que GLEW ou glfw. Ces bibliothèques simplifient la création de contexte OpenGL et le chargement de fonctions.
  3. Votre utilisation de wglMakeCurrent semble correcte, mais vous devrez peut-être étudier les bizarreries spécifiques à Intel pour le changement de contexte.

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