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");

=> 访问冲突仍然存在。

另一个帮助线程促使我下载 NVIDIA OpenGL SDK,因为我有一张 GT9800 Nvidia 卡:它没有删除“访问冲突”。

我尝试在 Borland Builder 6 中使用 Glee 和 Glew:

  • 要在 Borland 中包含 Glew,首先需要将 Visual Studio "coff" lib 从 coff 转换为 borland builder "omf" lib,

  • 但是使用 borland 命令脚本“coff2omf.exe”我得到这个错误标签:“无效的机器类型” - 使用“objconv.exe”我得到这个错误:“导入库无法转换为静态库”。

=> 有人知道我如何成功地将 Glew "coff" lib 转换为 Borland Builder 格式 "omf" 吗?

=> 我们如何将“导入库”转换为“静态库”?

4

1 回答 1

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 使用情况

    • 如果一切正常
    • 那么你仍然可以有访问冲突!
    • 如果 FBO 使用不当...
    • 但这还不是你的情况......
于 2013-12-19T10:30:01.383 回答