2

フレーム バッファ オブジェクト (FBO) のコマンド glGenFramebuffersEXT に「アクセス違反」があります。

    void TGLForm::DrawScene()
    {
    wglMakeCurrent(ghDC, ghRC);

    glEnable(GL_TEXTURE_2D);

    GLuint framebuffer, texturefbo;
    GLenum status;

    glGenFramebuffersEXT(1, &framebuffer);  // access violation here

FBO に関するヘルプ スレッドを見つけて、 glext.h の初期化に問題がないことを確認し、プリプロセッサ行の中で次のように繰り返しました。

    #include "glext.h"
    #include "wglext.h"

    extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC)wglGetProcAddress("glGenFramebuffersEXT");
    extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC)wglGetProcAddress("glBindFramebufferEXT");
    extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC)wglGetProcAddress("glFramebufferTexture2DEXT");
    extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC)wglGetProcAddress("glCheckFramebufferStatusEXT");
    extern PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)wglGetProcAddress("glGenRenderbuffersEXT");
    extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)wglGetProcAddress("glBindRenderbufferEXT");
    extern PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)wglGetProcAddress("glRenderbufferStorageEXT");
    extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)wglGetProcAddress("glFramebufferRenderbufferEXT");

⇒アクセス違反が残っています。

GT9800 Nvidia カードを持っているため、別のヘルプ スレッドで NVIDIA OpenGL SDK をダウンロードするように誘導されました。「アクセス違反」は削除されませんでした。

Borland Builder 6 で GLee と Glew を使用してみました:

  • Borland に Glew を含めるには、まず Visual Studio の「coff」lib を coff から borland ビルダーの「omf」lib に変換する必要があります。

  • しかし、borland コマンド スクリプト「coff2omf.exe」を使用すると、「無効なマシン タイプ」というエラー ラベルが表示されます。「objconv.exe」を使用すると、「インポート ライブラリをスタティック ライブラリに変換できません」というエラーが表示されます。

=> Glew の「coff」ライブラリを Borland Builder 形式の「omf」に変換する方法を知っている人はいますか?

=> 「インポート ライブラリ」を「静的ライブラリ」に変換するにはどうすればよいですか?

4

1 に答える 1

0
  1. GLEW .h、 .c ソース コードをダウンロードして使用する

    #define GLEW_STATIC
    #include "gl\glew.c"  // ~900KB file !!!
    
    • ボーランドソース内で何年も問題なく使用しています
    • インクルード パスに問題がある場合は、相対パスを使用してください
  2. 最初に glew を初期化することを忘れないでください

    glewInit();
    
    • もちろん、これの前に OpenGL を初期化する必要があります!!!
  3. FBOサポートがあるかどうかを確認してください

    if (glGenFramebuffersEXT==NULL) error ...
    
  4. FBOの使用

    • すべてがOKなら
    • それでもアクセス違反が発生する可能性があります!!!
    • FBO を正しく使用しないと...
    • しかし、これはまだあなたのケースではありません...
于 2013-12-19T10:30:01.383 に答える