2

EDIT2:解決策を見つけました!RenderContextType="FBO"Windows フォームの .xaml ファイルの OpenGLControl 内に追加する必要がありました。

私は MVC パターンのゲーム ベースに取り組んでいます。ビューは C# であり、モデルは C++ ライブラリです。それらの間のコントローラーとして C++/CLI を選択しました。今のところ、これで問題なく動作します。私の C++ ライブラリは、レンダリングに OpenGL を使用する、私が作成したゲーム エンジンです。そこで、C# 側の WPF アプリケーションで SharpGL を使用しました。次に、コントローラーを介して OpenGL イベントをモデルにリンクしました。これは罰金でも機能します。glVertex、glGenList などの基本的な OpenGL 関数を C++ 側で呼び出すことができます。

さて、ここで問題です。私は、OpenGL リストが私のニーズに対して遅いことがわかりました。だから私はVBOを使いたかった。私はすでにC++を使用していた別のプロジェクトでそれを使用しています。そのため、glewInit() を呼び出してエラーをチェックすることを忘れずに、プロジェクトに glew を含めます。

問題は、glGenBuffer を呼び出すと、アクセス違反の例外が発生することです。この問題を調査したところ、OpenGL 2.0 をサポートしていないことが glew からわかりました...しかし、これは誤りです。コンピューターが OpenGL 2.0 をサポートしていることを知っているからです。これらの関数を使用する C++ の別のプロジェクトがあり、glew から OpenGL 2.0 がサポートされていることがわかりました。サポートされています。

次に、wglGetProcAddress を介して拡張機能をロードしようとしました。しかし、null ポインターを返します。

したがって、 glewInit() がエラーをスローしなくても、コンテキストがない可能性があります。そこで、SharpGL.RenderContextProvider から deviceHandle と renderHandle を取得して C++ モデルに送信し、wglMakeCurrent を呼び出してコンテキストを取得しようとしました。関数はエラーを返しませんが、私の問題には何も変わりません。

そうです、今、私は本当に何をすべきかわかりません。どんな助けでも大歓迎です!

ありがとう!

編集:コンテキストが作成された後、拡張機能を呼び出す前に、既に glewInit() を呼び出していることを追加することが重要です。

4

0 に答える 0