ホームページ  >  記事  >  バックエンド開発  >  現在の OpenGL の初期化コードと終了コードは Intel HD 3000 に適していますか?また、複数の OpenGL コンテキストを管理するより良い方法はありますか?

現在の OpenGL の初期化コードと終了コードは Intel HD 3000 に適していますか?また、複数の OpenGL コンテキストを管理するより良い方法はありますか?

DDD
DDDオリジナル
2024-10-28 10:11:02445ブラウズ

 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 番目のレンダリング コンテキストの作成に失敗します。
  2. OpenGL ベースのソフトウェアへの変更後、2 番目のレンダリング コンテキストは作成できますが、リリース後は無効になります。

現在の初期化コードと終了コード:

<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. 現在の OpenGL 初期化/終了コードは間違っていますか?
  2. OpenGL を初期化して終了するより良い方法はありますか?
  3. 異なるものを適切に切り替える方法レンダリング コンテキスト?

回答:

  1. 現在の OpenGL 初期化コードと終了コードは正しいように見えますが、GLEW などのローダー ライブラリを使用することをお勧めします。
  2. GLEW や glfw などのローダー ライブラリを使用します。これらのライブラリにより、OpenGL コンテキストの作成と関数の読み込みが簡素化されます。
  3. wglMakeCurrent の使用は正しいように見えますが、コンテキストの切り替えに関する Intel 固有の癖を調査する必要がある場合があります。

以上が現在の OpenGL の初期化コードと終了コードは Intel HD 3000 に適していますか?また、複数の OpenGL コンテキストを管理するより良い方法はありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。