opengl中如何进行离屏渲染?如何创建比屏幕大的帧缓冲区?

问题描述

opengl中如何进行离屏渲染?如何创建比屏幕大的帧缓冲区?

我现在需要要创建一个9倍于屏幕大小的缓冲区,一次性渲染一个九倍当前屏幕大小的场景然后使用glReadPixel读取这个场景截图的数据(如果我创建的帧缓冲区没有屏幕大,我就没法从缓冲区中使用glReadPixel函数读取到面积足够大的图片,即使我读取的宽度和高度设置为屏幕的3倍,但是读取出来的超出屏幕的范围都是glClear清除出来的颜色,实际的场景没法被渲染到超高屏幕的范围)

首先,这个问题是我在负责一个老项目时候遇到的,这个老项目的OpenGL为1.3的,所以好多新函数没法应用,但是从代码中了解到
wglCreatePbufferARB函数可以创建给定大小的缓冲区。
但是在使用wglCreatePbufferARB创建缓存区时发现缓冲区的宽度和长度不能无限大,比如我创建一个10000*10000大小的缓冲区,就会报错

希望可以得到此函数的详细文档,但是好多搜索引擎和网站都看过了 找不到相关的描述,只是一些示例代码中有提及。

或者大家可以给我个建议 如何进行离屏渲染(要能渲染到比当前屏幕大小还要大的区域,而且要是版本不高于1.3中可以应用的方案)

希望在这里可以找到答案,大家可以发挥想象力,帮我出点点子,谢谢!
(由于不经常玩CSDN所以没有C币~解决后必有重谢,可以送小礼物哦,哈哈)

解决方案

http://blog.csdn.net/yangdelong/article/details/2500956

解决方案二:

使用FBO,并且与纹理关联,可绘制到纹理,也可与渲染缓冲区关联,即离屏渲染

时间: 2024-10-01 08:10:06

opengl中如何进行离屏渲染?如何创建比屏幕大的帧缓冲区?的相关文章

opengl es离屏渲染问题

问题描述 opengl es离屏渲染问题 我需要创建一个比屏幕打的缓存,我查资料发现有FBO和PBUFFER两种方式,请问离屏渲染时如何将缓存的某一块放到屏幕中显示?我自己找的例子都是将缓存全部放到屏幕里. 另外问一下现在手机都支持FBO吗 解决方案 1.每次draw 都应该在最后eglSwapBuffers(m_pOgles->m_EGLDisplay, m_pOgles->m_EGLSurface);?2.opengl es 1.x 与 2.x的LIB 不应该共用,因为两个lib里面有相同

IOS 性能优化中离屏渲染_IOS

GPU屏幕渲染有以下两种方式: On-Screen Rendering 意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行. Off-Screen Rendering 意为离屏渲染,指的是GPU在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作. 特殊的离屏渲染: 如果将不在GPU的当前屏幕缓冲区中进行的渲染都称为离屏渲染,那么就还有另一种特殊的"离屏渲染"方式: CPU渲染. 如果我们重写了drawRect方法,并且使用任何Core Graphics的技术进行了

多线程-如何在OpenGL中渲染多个视频

问题描述 如何在OpenGL中渲染多个视频 程序使用win32开发,视频使用ffmpeg进行帧的截取,然后贴到OpenGL纹理中,渲染一个视频的话不用使用到多线程,处理能力足够快,但是现在需要渲染多个视频,不可能在主线程完成,两三个视频基本上窗口就卡死了.后来改用多线程,建立了两个OpenGL的上下文环境,一个线程负责更新纹理,主线程负责渲染,但是更新纹理的线程依然是照着视频一个个照顺序截,截完再通知主线程画出来,本来以为这样的结构应该没问题,结果渲染速度依然达不到要求,现在想问问有什么办法做到

cuda c-CUDA-GPU加速-中值滤波-黑屏+显卡程序崩溃

问题描述 CUDA-GPU加速-中值滤波-黑屏+显卡程序崩溃 新手刚接触CUDA C,这段中值滤波的代码一直跑不通,如果读取一张小图片(2790,2560)没有问题,如果读取一张大图片(5580,5120),就会导致黑屏+没有结果. 我的显卡是NVIDIA Geforce 820M #include <iostream> #include "ImMedFilter.h" #define DIM_GRID 128 #define DIM_BLOCK 16 using name

Android中3种全屏方法及3种去掉标题栏的方法

这篇文章主要介绍了Android中3种全屏方法及3种去掉标题栏的方法,二个问题各给出了3种解决方法,并给出实例代码,需要的朋友可以参考下     一.去掉标题栏的方法 第一种:入门的时候经常使用的一种方法 代码如下: requestWindowFeature(Window.FEATURE_NO_TITLE); //去掉标题栏注意这句一定要写在setContentView()方法的前面,不然会报错的 第二种:在AndroidManifest.xml文件中定义 代码如下: <application

c++-向opengl中加载一个3ds文件的问题........

问题描述 向opengl中加载一个3ds文件的问题........ 我在网上找了好多有关的资料和代码,几乎都是win32的程序.我没学过windows编程,理解起来好费劲啊!我学习opengl只有几天的时间,估计连个新手也算不上,不知道那位能给提供一个能运行的控制台的代码.... 对于3ds里面的文件结构我基本上了解了一些,我主要想看看加载的代码该如何写呢? 谢谢..

Android 的apk重新打包签名后,安装成功后,手机中转屏(横竖屏切换)软件强行自动关闭了

问题描述 Android 的apk重新打包签名后,安装成功后,手机中转屏(横竖屏切换)软件强行自动关闭了 Android 的apk重新打包.签名后,安装成功后,手机中转屏(横竖屏切换)软件强行自动关闭了什么情况,我用apktool打包签名的. 解决方案 最好是接上调试,看看出错时的 logcat 的输出.如果是所有手机都出错,还比较好解决的,就怕重现不了. 解决方案二: 这种情况应该是不支持或不兼容. 解决方案三: activity在转屏的时候会执行onResume(),你可能是有一些变量在转屏

浏览器延迟 渲染-net中如何让浏览器延迟渲染

问题描述 net中如何让浏览器延迟渲染 .net中如何让浏览器延迟渲染.............................

en 悬浮提示框 绘图-OpenGL中可以实现类似的悬浮框吗?

问题描述 OpenGL中可以实现类似的悬浮框吗? 4.现在的Windows下的OpenGL版本对OpenGL和GDI在同一个DC上作图有一定的限制.当使用双缓存用OpenGL产生动画时,不能使用GDI函数向该DC作图. 我用的双缓存 貌似不可以用DC再绘图了吧?看这图片上的 还有汉字而且不会随窗口的放大变化 这到底是怎么实现的?类似CToolTipCtrl 这样的在空间上用的悬浮提示框可以实现这样的效果吗? 解决方案 输入是靠控件实现的,其它可以自己画 解决方案二: 用什么画?绝对不是在Open