2

OpenGLにリンクするDLLを構築しています。しかし、明らかに__glewGenBuffers(および他のglewバッファ関数)がnullであるため、glGenBuffersなどの一部の関数を呼び出すときに問題が発生します。すべてが正しくコンパイルされ、同じコードが実行可能ファイルで機能しますが、私のDLLでは機能しません。VS 2010を使用しています。DLLからOpenGLにリンクすることについて何かアイデアはありますか?

編集:言及するのを忘れました、私は実際にエンジン(静的ライブラリ)をDLLにリンクしようとしています、そしてexeファイルもそれを使用します(DLLに入れたい小さな部分を除いてほとんどすべてを行います) 。エンジンをリンクする代わりに、DLLからのOpenGL呼び出しだけを使用しても、問題なく動作するようにできれば、間違いなく問題ありません。

4

1 に答える 1

4

GLEWは、一部のプラットフォームでコンテキスト依存の関数ポインターを処理するために、いくつかのトリックを実行する必要があります。これらのプラットフォームの1つはWindowsです。物事を機能させるための絶対確実な方法は、

  1. 実際にOpenGLコンテキストがバインドされているかどうかをテストします
  2. glewInit()を呼び出す

拡張OpenGL機能を使用するDLL内の関数が呼び出されるたび。つまり

… some_DLL_exported_function(…)
{
    if(    NULL == wglGetCurrentContext() || 
        GLEW_OK == glewInit() ) {
        return …;
    }
}
于 2013-01-03T00:25:25.837 に答える