【问题标题】:What happens after an openGL draw call?在 openGL 绘图调用之后会发生什么?
【发布时间】:2015-06-04 23:38:57
【问题描述】:

我正在尝试反转项目的图像,这应该像将投影矩阵缩放 (1, -1, 1) 一样简单。但是,屏幕是在我无法访问且没有文档的 API 中绘制的(这个项目非常旧)。因此,执行该缩放基本上没有任何作用(我假设是因为投影矩阵在 API 调用中被重置)。

在绘图调用后我是否仍然可以访问绘图信息,或者它已被清除?如果信息仍然存在,如何获取?

附: - 我正在使用 openGL 1.1

【问题讨论】:

  • 在固定功能的管道中,在使用绘图调用发送几何图形后,您无能为力。我想也许你应该澄清一下,你是想反转单个模型、纹理还是整个场景?每种情况的答案都不同。
  • 您可以尝试交叉/记录 opengl 命令。应该有一些调试工具可用(opengl.org/wiki/Debugging_Tools
  • racarate - 我的目标是翻转整个场景,从镜子中反射出来。
  • RedAgito - 不幸的是,使用任何类型的第 3 方软件(合法的 opengl 调试工具或其他工具,例如视觉泄漏检测器)可能需要数年时间才能获得
  • 您在添加的代码中是否仅限于 OpenGL 1.1?还是只是使用 1.1 的遗留代码?

标签: c++ opengl


【解决方案1】:

从程序员的角度来看,OpenGL 是可以想象到的最糟糕的短期健忘症。一旦从程序员的角度返回绘图调用,OpenGL 已经将所有内容都变成了彩色像素,并且完全忘记了它刚刚做了什么。

那么……

在绘图调用后我是否仍然可以访问绘图信息,还是已清除?

不,您在绘制后无法访问它,并且尽一切可能将其清除。


但是您提到旧代码是旧的。所以很有可能它不知道着色器,即不会禁用或加载其自定义着色器。因此,我尝试使用旧 GLSL 版本配置文件之一加载着色器,该配置文件仍然具有映射到旧固定函数管道内容的内置变量,并编写着色器以使其符合遗留代码的需求。

【讨论】:

  • datenwolf - 感谢您的回复。我在这个项目上已经 3 个月了,据我所知,没有着色器。我会看看我能用这个做什么!着色器会让我的生活变得非常轻松。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 2023-03-26
  • 1970-01-01
  • 2016-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多