在 Borland C++ Builder 6 中使用帧缓冲区对象 (FBO)

2024-05-19

我对帧缓冲区对象 (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 :

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

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

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

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


  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 使用不当...
    • 但这还不是你的情况......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Borland C++ Builder 6 中使用帧缓冲区对象 (FBO) 的相关文章

  • 在 JavaScript 或 Node 中将 Blob 数据转换为原始缓冲区

    我正在使用插件jsPDF https github com MrRio jsPDF它生成 PDF 并将其保存到本地文件系统 现在在 jsPDF js 中 有一些代码可以生成 blob 格式的 pdf 数据 如下所示 var blob new
  • WebSocket 连接到 TIdHTTPServer,握手问题

    我正在使用 C Builder 10 1 Berlin 编写一个简单的 WebSocket 服务器应用程序 该应用程序在端口上侦听从 Web 浏览器 例如 Google Chrome 发送的一些命令 在我的表单上 我有一个 TMemo TB
  • Windows 7 上的 IHTMLDocument2 和 Internet Explorer 11 更改

    I use TWebBrowser在我的应用程序中拥有 HTML 编辑器 当然这取决于安装的 Internet Explorer 版本 我注意到在 Windows 7 上安装全新的 Internet Explorer 11 后 我的编辑器发
  • 将响应缓冲区转换为 JSON

    在 AWS 中 我使用 https 模块通过 Lambda 发出 get 请求 我能够返回数据 但当我调用时它是缓冲区格式的callback null obj https get options res gt res on data d g
  • C++ 中的静态虚函数

    我有一个基类和一个派生类 我想更改基函数 同时保持它们静态 因为它们应该作为静态传递给其他函数 我怎样才能做到这一点 ATL 框架通过将基类设为模板 然后让派生类将其类类型作为模板参数传递 从而绕过了无虚拟静态的限制 然后 基类可以在需要时
  • CALayerframe.size不等于bounds.size

    我在CALayer上遇到了一些奇怪的事情 最后发现CALayer的frame size不等于它的bounds size 这是我无法理解的 我知道frame是在super的坐标系中 bounds是它自己的坐标 并且通常的情况是frame or
  • 框架可以用什么代替?

    假设我有一个包含 50 个网页的网站 每个页面由 A Header 导航 左侧内容 右侧内容 Footer 不使用 Frames 服务器端编程 第三方工具和软件 构架 我需要将这 5 个部分的代码 HTML 标记 分别放入这 50 个页面中
  • iOS:将观察者添加到 UIView 的frame.origin.y?

    我正在尝试监视 UIView 框架原点的变化值并对其做出反应 我的代码 cell bottomView addObserver self forKeyPath frame origin options NSKeyValueObserving
  • 如何增加ofstream的缓冲区大小

    我想增加 C 程序的缓冲区大小 以便它不会过于频繁地写入 默认缓冲区是 8192 字节 我尝试使用 pubsetbuf 将其增加到 200K 原始代码 ofstream fq fastq1 cstr ios out fastq1 is a
  • 如何读取大型平面文件

    我有一个平面文件 其中包含 339276 行文本 大小为 62 1 MB 我试图读入所有行 根据我所拥有的某些条件解析它们 然后将它们插入数据库 我最初尝试使用 bufio Scan 循环和 bufio Text 来获取该行 但缓冲区空间不
  • 金属着色语言 - 更改缓冲区大小

    是否可以在运行时更改缓冲区大小 我们在注册期间分配缓冲区大小device device MTLCreateSystemDefaultDevice queue device makeCommandQueue do let library de
  • 如何使用 apache2 和 mod_proxy_fcgi 禁用缓冲?

    我在 debian Jessie 上使用 mod proxy fcgi 和 apache 2 4 以及我的 C 应用程序 该应用程序使用 libfcgipp 执行 ServerSentEvents 我的问题是 apache 仍然缓冲我的响应
  • 自动调整大小完成后如何获取帧大小

    我想知道 如何以及何时 viewDidLoad viewWillAppear viewDidAppear 可以获得自动调整大小以适合其父视图的 UIViews 框架大小 从你的问题中不清楚你为什么想要它 但我想这是为了布局你的子视图 幸运的
  • 在 Firemonkey 中使用 TTreeView 进行拖放

    我正在使用 C Builder 10 2 2 Tokyo 和 FireMonkey FMX 我想添加拖放功能TTreeView 因此用户可以重新排列树项目的顺序 我已经添加了一个处理程序TTreeView OnMouseDown事件 基于这
  • 使用 C++ 程序中的 dll。 (borland c++ builder 和一般情况)

    我试图在我的程序中使用一个 dll 即 libcurl 但是它没有链接 Libcurl 附带了我可以包含的 h 文件 负责 dllimport 但我想我必须指定在以某种方式链接时实际使用哪个 dll 我该怎么做 我正在使用 Borland
  • 如何使用 Java 本机接口将字节数组传递到以 char* 作为参数的 C 函数中?

    所以我需要使用JNI从java调用C函数 当传入不同的数据类型 创建本机变量 头文件 共享库等等 时 我已经能够成功地做到这一点 但无法让它与字节数组一起使用 这是我的 C 函数 include
  • 如何在 Emacs shell 缓冲区中获得对“✖”等的支持?

    我正在运行一个进程 如果出现错误 则输出字符 如 Unicode 中定义 但是 如果在 Emacs shell 缓冲区 GNU Emacs 的 Aquamacs 发行版 中运行该进程 我根本看不到错误 使用 braeburn aquamac
  • 如何通过 Web-Workers 传递自定义类实例?

    由于 Web Worker JSON 在线程之间序列化数据 因此这样的方法不起作用 worker js function Animal Animal prototype foobar function self onmessage func
  • Swift SpriteKit 获取可见帧大小

    我一直在尝试使用 Swift 创建一个简单的 SpriteKit 应用程序 目的是让红球在点击时重新定位在屏幕上 但变量 self frame width 和 self frame height 不会返回可见屏幕的边界 相反 它们返回整个屏
  • 如何在nodejs缓冲区中存储整数?

    节点jsBuffer http nodejs org docs v0 4 12 api buffers html是相当膨胀 然而 它似乎适合存储字符串 构造函数采用字符串 字节数组或要分配的字节大小 我使用的是 Node js 0 4 12

随机推荐