c++ - 是否可以从原始大小的 OpenGL 缓冲区获取像素?
问题描述
我有一个使用 OpenGL 的 4K 项目。所以我所有的图像都是基于 4K 的,它可以在我的全屏 1080p 计算机上渲染。OpenGL 只是很好地调整大小而没有问题。但我想使用 glReadPixels() 之类的东西从 4K 源读取缓冲区。到目前为止,我无法弄清楚这是否可能。不确定 GPU 帧缓冲区在调整大小时会发生什么,我猜它只是将缓冲区大小调整为 1080p,从而无法获取原始的 4k 内容?如果是这种情况,我会做其他事情,但在我冒险编写一些额外的代码之前必须先问清楚。;-) 谢谢。
解决方案
使用帧缓冲区对象以您喜欢的分辨率渲染场景并从那里读回数据。如果您仍然想要窗口中的“实时预览”,只需将 FBO 内容blit 到您的默认帧缓冲区(并在该步骤中缩小它们)。
推荐阅读
- oauth-2.0 - 在 JHipster 中使用 Keycloak 扩展用户实体
- javascript - 如何限制鼠标点击复选框并从JS触发?
- excel - 如何创建一个 VBA 函数,该函数将从 excel 中选择值并“可拖动”(即基于活动单元格将具有不同的输入)
- c# - 如何生成长度小于/大于长度的字符串
- android - 设备处于空闲模式时不调用位置结果回调
- ios - 使用 Braintree SDK 在 Paypal 结帐中添加运费
- opencv - 从 OpenCv 图像比较中获取比较分数
- java - 使用 java 8 查找列表中重复次数最多的短语
- node.js - 如何使用来自另一个集合的数据创建文档?
- mysql - 如何在 WHERE 中使用 NULL 列?