delphi - 在 Delphi 中使用 OpenGL 渲染到纹理

标签 delphi opengl windows-7 2d render-to-texture

很难说出这里问的是什么。这个问题是模棱两可的、模糊的、不完整的、过于宽泛的或修辞的,无法以目前的形式得到合理的回答。如需帮助澄清这个问题以便重新打开它,visit the help center .




8年前关闭。




我正在为我不那么简单的 OpenGL 游戏制作简单的 GUI。由于有一个包含大量控件的大菜单,我将控件分组并将它们放入可以通过主菜单中的按钮访问的不同窗口中。所以现在我想用每个窗口的可点击缩略图替换按钮,这就是为什么我需要将 GUI 渲染为纹理。

目前我的电脑装有 Windows 7 和 Geforce 210 显卡,支持 OpenGL 到 3.3.0 版本(但我不在乎我将使用什么版本)。我有 Delphi 的 'dglOpenGL.pas' 库。我想用纹理控件来渲染这些窗口,但因为我在这些事情上很n00b,所以我做不到(我尝试了 C# 教程,但到目前为止没有工作结果)。任何帮助,将不胜感激。

最佳答案

OpenGL 中的渲染到纹理包括创建帧缓冲区对象 (FBO) 并将其附加到纹理。看看the documentation for framebuffer objects了解基本概述。

一般的工作流程是这样的:

  • 使用 glGenFramebuffers 创建一个帧缓冲对象
  • 使用 glBindFramebuffer 激活帧缓冲区
  • 使用 glFramebufferTexture 将帧缓冲区附加到要渲染的纹理上
  • 调用 glCheckFramebufferStatus以确保它有效。
  • 设置视口(viewport)以匹配您要渲染到的纹理的尺寸。 (这通常涉及调用 glViewport 和 glOrtho,我相信你已经熟悉了,所以我不会在这里链接它们。)
  • 做你的渲染。
  • 完成后,停用 FBO(再次调用 glBindFramebuffer 并将 0 作为 FBO ID 值传递)并重置您的视口(viewport)。
  • 无论您渲染什么,现在都应该在纹理中。
  • 关于delphi - 在 Delphi 中使用 OpenGL 渲染到纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16593898/

    相关文章:

    oracle - 如何将 DATE 类型的参数传递给函数

    Delphi 7,使用 UNC 选择目录

    OpenGL人脸检测

    css - 在 HTA 中失去焦点时,按钮的虚线边框变为两条实线边框

    delphi - 寻找具有良好单元测试覆盖率的开源Delphi项目

    c++ - 如何将纹理应用于四边形以对立方体进行纹理处理?

    c - SSBO 作为更大的 UBO?

    visual-studio - 无法卸载 Visual Studio 2012 - 抛出异常?

    C++ 检查是否有任何用户登录到 windows 7

    html - 如何将 CSS 包含到 IntraWeb 元素中?