gpt4 book ai didi

c++ - 如何在 Win32 上加速具有大纹理的屏幕外 OpenGL 渲染?

转载 作者:行者123 更新时间:2023-11-30 00:41:37 25 4
gpt4 key购买 nike

我正在开发一些 C++ 代码,可以在两个图像之间做一些奇特的 3D 过渡效果,我认为 OpenGL 是最好的选择。

我从一个 DIB 部分开始并为 OpenGL 设置它,然后我从输入图像创建两个纹理。

然后对于每一帧,我只绘制两个 OpenGL 四边形,以及相应的图像纹理。然后将 DIB 内容保存到文件中。

例如,一种效果是定位两个四边形(在 3d 空间中),就像两个广告牌一样,一个在另一个前面(遮住它),然后向上、向前和向下俯冲相机,以便您可以看到第二个.

我的输入图像是 1024x768 左右,当四边形覆盖大部分 View 时,渲染需要很长时间(100 毫秒)。如果相机距离较远,它会加快速度。

我尝试将每个图像四边形渲染成数百个单独的图 block ,但它只需要相同的时间,这似乎取决于可见纹理像素的数量。

我假设 OpenGL 每秒可以处理无数个多边形。我在这里缺少什么吗?

使用其他方法会更好吗?

提前致谢...

编辑:

DIB 版本的 GL 字符串显示为:

供应商:微软公司版本:1.1.0渲染器:GDI 通用

屏幕版本显示:供应商:ATI Technologies Inc.版本:3.2.9756 兼容性配置文件上下文渲染器:ATI Mobility Radeon HD 3400 系列

所以我想我将不得不使用 FBO,我对如何将渲染数据从 FBO 导出到 DIB 有点困惑,关于它的任何指针(双关语)?

最佳答案

这听起来像是渲染到 DIB 强制渲染发生在软件中。我会渲染到帧缓冲区对象,然后从生成的纹理中提取数据。 Gamedev.net 有一个相当不错的 tutorial .

但是请记住,图形硬件主要面向在屏幕上绘图。捕获渲染数据通常比显示数据慢,即使您确实让硬件进行渲染也是如此——尽管它仍然比软件渲染快很多。

编辑:Dominik Göddeke 有一个 tutorial其中包括用于将纹理数据读回 CPU 地址空间的代码。

关于c++ - 如何在 Win32 上加速具有大纹理的屏幕外 OpenGL 渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3311388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com