Heim  >  Artikel  >  Backend-Entwicklung  >  Ist der aktuelle OpenGL-Initialisierungs- und Exit-Code für Intel HD 3000 geeignet und gibt es bessere Möglichkeiten, mehrere OpenGL-Kontexte zu verwalten?

Ist der aktuelle OpenGL-Initialisierungs- und Exit-Code für Intel HD 3000 geeignet und gibt es bessere Möglichkeiten, mehrere OpenGL-Kontexte zu verwalten?

DDD
DDDOriginal
2024-10-28 10:11:02445Durchsuche

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

Was ist die richtige OpenGL-Initialisierung auf Intel HD 3000?

Problem:

Auf einer Intel HD 3000-Grafikkarte , führt das Erstellen mehrerer OpenGL-Kontexte in einer einzigen Anwendung zu unvorhersehbarem Verhalten:

  1. Ältere Versionen der App können keinen zweiten Rendering-Kontext erstellen.
  2. Nach Änderungen an der OpenGL-basierten Software , der zweite Rendering-Kontext kann erstellt werden, wird aber nach der Veröffentlichung ungültig.

Aktueller Initialisierungs- und Exit-Code:

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

Fragen:

  1. Ist der aktuelle OpenGL-Initialisierungs-/Exitcode falsch?
  2. Gibt es eine bessere Möglichkeit, OpenGL zu initialisieren und zu beenden?
  3. Wie wechselt man richtig zwischen verschiedenen Kontexte rendern?

Antwort:

  1. Der aktuelle OpenGL-Initialisierungs- und Exit-Code sieht korrekt aus, aber die Verwendung einer Loader-Bibliothek wie GLEW wird empfohlen.
  2. Verwenden Sie eine Loader-Bibliothek wie GLEW oder glfw. Diese Bibliotheken vereinfachen die OpenGL-Kontexterstellung und das Laden von Funktionen.
  3. Ihre Verwendung von wglMakeCurrent scheint korrekt zu sein, aber Sie müssen möglicherweise Intel-spezifische Besonderheiten für den Kontextwechsel untersuchen.

Das obige ist der detaillierte Inhalt vonIst der aktuelle OpenGL-Initialisierungs- und Exit-Code für Intel HD 3000 geeignet und gibt es bessere Möglichkeiten, mehrere OpenGL-Kontexte zu verwalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn