2011-04-19 89 views
2

我有一個「訪問衝突」的幀緩衝對象(FBO)的命令glGenFramebuffersEXT:使用幀緩衝對象(FBO)6

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

    glEnable(GL_TEXTURE_2D); 

    GLuint framebuffer, texturefbo; 
    GLenum status; 

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

創始關於宗教組織幫助線程,我檢查了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"); 

=>訪問衝突仍然存在。

另一個線程幫助我感應到下載NVIDIA OpenGL的SDK的,因爲我有一個GT9800 Nvidia顯卡:它沒有刪除「訪問衝突」。

我試着在Borland的生成器6使用歡樂合唱團和GLEW:

  • 包括GLEW在Borland公司則首先需要到Visual Studio 「COFF」 LIB從COFF轉換爲borland的建設者 「OMF」 LIB,

  • 但Borland的命令腳本「coff2omf.exe」我得到這個錯誤標籤:「無效的機型」 - 與「objconv.exe」我得到這個錯誤:「導入庫不能轉換爲靜態庫」。

=>有人知道我可以如何設法將Glew「coff」lib轉換成Borland Builder格式「omf」嗎?

=>我們如何轉換的「導入庫」的「靜態庫」?

+0

因此,當我嘗試包含Glee.h時,它需要在之前調用glext.h。 而glext.h需要之前調用的gl.h。 但Glee.h不支持之前調用gl.h! ??? 的#include 「WINDOWS.H」 的#include 「glxext.h」 的#include 「GLee.h」 的#include 的#include 「glext.h」 的#include 「wglext.h」 – Arnaud 2011-04-19 12:33:22

+2

注意GLEW作品只需將源文件添加到您的項目即可。無需轉換任何庫。閱讀「包括源文件」:http://glew.sourceforge.net/install.html(請注意,如果您是OpenGL的初學者,您應該不會嘗試手動加載擴展,這很痛苦且容易出錯, GLEW是即插即用的) – Damon 2011-04-19 18:48:33

+0

好的,謝謝我最終將glew的dll和lib文件複製到了正確的目錄中,並且包括glew成功,但我沒有再嘗試FBO。我會告訴它是否有效。 – Arnaud 2011-04-27 04:39:58

回答

0
  1. 下載並使用GLEW .H, .C源代碼

    #define GLEW_STATIC 
    #include "gl\glew.c" // ~900KB file !!! 
    
    • 我使用了很多年的Borland源裏面沒有任何問題
    • 如果你有問題包括路徑然後只使用相對路徑
  2. 不要忘了初始化GLEW第一

    glewInit(); 
    
    • 當然你的OpenGL必須在此之前初始化!
  3. 檢查,如果你有FBO支持

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

    • 如果一切OK
    • ,那麼你仍然可以訪問違規!
    • 如果不正確使用FBO ...
    • ,但是這不是你的情況下,還...
相關問題