3

このエラーが発生しています:

「アクセス違反実行場所 0x00000000」

WindowsでGLFW + GLEWを使用すると。

私はWindows 7を使用しています。また、ウィンドウを作成し、OpenGLコンテキストを初期化し、GLEWを初期化する独自の実装を(ゼロから)持っています...そしてすべて正常に動作します。もちろん、私のビデオ カードにはフレーム バッファ機能があり、ドライバはすべて問題ありません。問題は、GLFW を使用しようとしたときにのみ発生します。

なにか提案を?

コード:

void start()
{
    if( !glfwInit() )
    {
        glfwTerminate();
        throw exception( "Failed to initialize GLFW" );
    }

    glfwOpenWindowHint( GLFW_FSAA_SAMPLES, 4 );
    glfwOpenWindowHint( GLFW_OPENGL_VERSION_MAJOR, 3 );
    glfwOpenWindowHint( GLFW_OPENGL_VERSION_MINOR, 3 );
    glfwOpenWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE );

    if( !glfwOpenWindow( m_width, m_height, 0, 0, 0, 0, 32, 0, GLFW_WINDOW ) )
    {
        throw exception( "Failed to open GLFW window." );
        glfwTerminate();
    }

    if ( glewInit() != GLEW_OK )
    {
        throw exception( "Failed to initialize GLEW" );
    }

    // texture
    glGenTextures( 1, &m_texture );
    glBindTexture( GL_TEXTURE_2D, m_texture );

    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );

    glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA8, m_width, m_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0);

    // frame buffer
    glGenFramebuffers( 1, &m_frameBuffer ); // IT CRASHES HERE! :-(
    glBindFramebuffer( GL_FRAMEBUFFER, m_frameBuffer );

    glBindTexture( GL_TEXTURE_2D, m_texture );

    ...
}
4

2 に答える 2

7

GLEW には、コア OpenGL プロファイルを操作する際の既知の問題があります。GLEW 回避策を使用するか、GLEWを放棄して、実際に機能する拡張ローダーを使用できます。

于 2013-03-01T20:45:38.277 に答える
1

私はちょうど同じ問題に遭遇しました。解決策: glGenFramebuffers を使用する代わりに、"glGenFramebuffersEXT" を使用し、フレームバッファを使用するその他の関数では、常に "EXT" を最後に配置すると、機能するはずです。ここに問題があります。ARB バージョンと EXT バージョンの 2 つのバージョンの拡張機能が存在し、「EXT」と書かない場合は「ARB」バージョンを使用します。これはほとんど同じことを行いますが、コア プロファイルの一部です。新しい gl バージョン。したがって、互換性を保つために、常に関数の「EXT」バージョンを使用してください:-)

于 2015-03-02T16:06:45.610 に答える