6

つまり、これはドゥージーです。
Windows7のGLSL1.5を使用してバージョン3.2コアで記述された、かなり大規模なOpenGLソリューションがあります。ヘルパーライブラリとしてGLEWとGLMを使用しています。ウィンドウを作成するときは、次の行を使用しています。

// Initialize main window
glewExperimental = GL_TRUE;
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3); // Use OpenGL Core v3.2
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
if(!glfwOpenWindow(Game::WINDOW_X, Game::WINDOW_Y, 0, 0, 0, 0, 32, 0, GLFW_WINDOW))
{ ...

3つのglfwOpenWindowHint関数を省略すると、アプリケーションはglDrawArrays(GL_TRIANGLES、0、m_numIndices);を呼び出すとビデオドライバーをクラッシュさせます。

しかし、ここにキッカーがあります。私のグループの他の誰かがソリューションを更新して実行しようとすると、ジオメトリのない空白のウィンドウが表示されます。3行をコメントアウトすると、プログラムは正常に実行されます。3.2coreヒントを使用する場合と使用しない場合では、かなり均等に分割されます。nVidia、AMD、デスクトップ、またはラップトップの違いを特定できませんでした。

私が見つけた最高のものは、glewExperimental=GL_TRUEを追加する提案でした。グリューはコアに問題があると言われています。違いはありませんでした。ソリューションは大きすぎてコードを投稿できませんが、必要に応じてシェーダーやレンダリングコードなどを配置できます。

本当にありがとう!これは私たちを数日間殺してきました。

4

2 に答える 2

10

上位互換性のあるGLFWウィンドウを要求してみてください。

GLFW_OPENGL_FORWARD_COMPAT-OpenGLコンテキストに上位互換性を持たせる(つまり、レガシー機能を禁止する)かどうかを指定します。これは、OpenGLバージョン3.0以降を要求する場合にのみ使用する必要があります。

そして、プロファイルのヒントを設定せずに、システムに次のことを選択させてください

// Use OpenGL Core v3.2
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

また、実際に必要なバージョンを入手していることを確認してください。

int major, minor, rev;

glfwGetGLVersion(&major, &minor, &rev);

fprintf(stderr, "OpenGL version recieved: %d.%d.%d", major, minor, rev);

Macでも実行できるかどうかはわかりませんが、とにかくこれを読んでください。

A.4 MacOSX上のOpenGL3.0+

OpenGL3.0以降のサポートはMacOSX 10.7で導入されましたが、それでも上位互換のOpenGL 3.2コアプロファイルコンテキストがサポートされており、デバッグコンテキストを要求するメカニズムはありません。以前のバージョンのMacOSXは、多くてもOpenGLバージョン2.1をサポートしています。

このため、Mac OS X 10.7では、3.2より前のバージョンを指定するとGLFW_OPENGL_VERSION_MAJORおよびGLFW_OPENGL_VERSION_MINORヒントが失敗し、GLFW_OPENGL_DEBUG_CONTEXTおよびGLFW_FORWARD_COMPATヒントは無視されます。

また、Mac OS X 10.6以下では、2.1より上のバージョンを指定するとGLFW_OPENGL_VERSION_MAJORおよびGLFW_OPENGL_VERSION_MINORヒントは失敗し、GLFW_OPENGL_DEBUG_CONTEXTヒントは効果がなく、GLFW_OPENGL_PROFILEまたはGLFW_FORWARD_COMPATヒントをglFW_FORWARD_COMPAT値に設定すると失敗します。 。

于 2012-01-26T11:48:59.687 に答える
0

私は同じ問題に遭遇しました。VBOの前にVAOを作成する必要がありましたが、現在はOSXで動作します。

GLuint vertex_array;
glGenVertexArrays(1, &vertex_array);
glBindVertexArray(vertex_array);
于 2013-04-12T00:11:18.633 に答える