Использование объектов кадрового буфера (FBO) в Borland C ++ Builder 6 - PullRequest
2 голосов
/ 19 апреля 2011

У меня есть «нарушение прав доступа» по команде glgenFramebuffersEXT объекта буфера кадров (FBO):

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

=> Нарушение прав доступа сохраняется.

Другой поток помощи побудил меня загрузить SDK NVIDIA OpenGL, потому что у меня есть карта GT9800 Nvidia:оно не устранило «нарушение прав доступа».

Я пытался использовать GLee и Glew в Borland Builder 6:

  • , чтобы включить Glew в Borland, который сначала необходим дляпреобразовать Visual Studio "coff" lib из coff в borland builder "omf" lib,

  • , но с помощью командного сценария borland "coff2omf.exe" я получаю эту метку ошибки: "недопустимый тип компьютера"- и с" objconv.exe "я получаю эту ошибку:" библиотека импорта не может преобразовать в статическую библиотеку ".

=> кто-то знает, как мне удается преобразовать Glew"кофф лиb в формат Borland Builder «omf» успешно?

=> как мы можем преобразовать «библиотеку импорта» в «статическую библиотеку»?

1 Ответ

0 голосов
/ 19 декабря 2013
  1. скачать и использовать GLEW .h, .c исходный код

    #define GLEW_STATIC
    #include "gl\glew.c"  // ~900KB file !!!
    
    • Я использую его в течение многих лет в Borland Source без проблем
    • если у вас проблемы с включаемым путем, просто используйте относительные пути
  2. не забудьте инициализировать glew первым

    glewInit();
    
    • конечно, ваш OpenGL должен быть инициализирован до этого !!!
  3. проверьте, есть ли у вас поддержка FBO

    if (glGenFramebuffersEXT==NULL) error ...
    
  4. использование FBO

    • если все в порядке
    • тогда у вас все еще могут быть нарушения прав доступа !!!
    • если FBO не используется должным образом ...
    • но это еще не ваш случай ...
...