2011-04-19 121 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 ...
    • ,但是这不是你的情况下,还...
相关问题