首頁  >  文章  >  後端開發  >  目前的 OpenGL 初始化和退出程式碼是否適合 Intel HD 3000,是否有更好的方法來管理多個 OpenGL 上下文?

目前的 OpenGL 初始化和退出程式碼是否適合 Intel HD 3000,是否有更好的方法來管理多個 OpenGL 上下文?

DDD
DDD原創
2024-10-28 10:11:02505瀏覽

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

Intel HD 3000 上正確的 OpenGL 初始化是什麼?

問題:

在Intel HD 3000 顯示卡上,在單一應用程式中建立多個OpenGL 情境會導致不可預測的行為:

  1. 舊版的應用程式無法建立第二個渲染上下文。
  2. 更改基於 OpenGL 的軟體後,第二個渲染上下文可以創建,但釋放後失效。

目前初始化與退出程式碼:

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

問題:

    問題:
  1. 當初始化/退出程式碼是否不正確?
  2. 有沒有更好的方法來初始化和退出 OpenGL?
如何正確切換不同的渲染上下文?

答案:
  1. 目前的 OpenGL 初始化和退出程式碼看起來是正確的,但建議使用載入器庫,例如 GLEW。
  2. 使用載入器庫,例如 GLEW 或 glfw。這些函式庫簡化了 OpenGL 上下文建立和函數載入。
您對 wglMakeCurrent 的使用看起來是正確的,但您可能需要研究英特爾特定的上下文切換怪癖。

以上是目前的 OpenGL 初始化和退出程式碼是否適合 Intel HD 3000,是否有更好的方法來管理多個 OpenGL 上下文?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn