欢迎来到天天文库
浏览记录
ID:36501926
大小:586.60 KB
页数:4页
时间:2019-05-11
《基于FBO和GPU的动态CEM算法及实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、http://www.paper.edu.cn基于FBO和GPU的动态CEM算法及实现高光磊第陈炳发1.南京航空航天大学机电学院江苏南京210016摘要改进了OPENGL中动态立方体环境映射的实现方法,新方法利用FBO使环境图像直接渲染到立方体纹理,利用GPU编程语言GLSL进行逐像素纹理和光照计算,与传统方法相比,该方法提高了帧率和图象质量。最后给出了该方法实现过程。关键词OPENGLFBO动态立方体环境映射CubeMapGPU中图分类号TP317.4文献标示码:AAMethodofDynamicCEMBasedonFBO&GPUGAOGuang-lei1CHENBing–f
2、a11NanjingUniversityofAeronauticsandAstronautics,JiangsuNanjing,210016,ChinaAbstractAnewmethodofOPENGLCEMisintroduced,whichrenderintoCubeMaptexturedirectlyusingFBO,andcomputerperpixeltexturecoordinateandlightingusingGPUprogramminglanguageGLSL.Comparedwithtradition,thismethodincreasedisplayve
3、locityandachievegoodimagequality.Therealizationofthismethodisgiven.KeywordsOPENGLFBODynamicCEMCubeMapGPU传统使用CubeMap渲染物体的方法是采用固定渲染管1引言道,该方法采用顶点纹理坐标生成和顶点光照计算,并且不能当今游戏大量使用动态环境映射技术,以加强真实感显计算折射,所以生成真实感图形的效果有限。示。通常采用的动态环境映射技术是动态CEM(Cube2动态CEM理论及算法EnvironmentMapping,立方体环境映射)技术,可以实时地生成水、金属、玻璃等物体的反射和
4、折射效果。因此,动态CEM2.1使用FBO(framebufferobject)渲染到纹理技术具有很强的应用和研究价值。FBO[1]是GL_EXT_framebuffer_object扩展多种对象中最主要的对象,它封装了所有的帧缓存相关的状态。每个FBO都被做为逻辑缓存(logicalbuffers)的标示符。逻辑缓冲可以是颜色缓存、深度缓存或模板缓存。逻辑缓存能够独立创图1传统的渲染到纹理的方法建并绑定到FBOs动态CEM包括两个过程:实时生成CubeMap和用CubeMap绘制物体。.生成CubeMap需要六次渲染纹理操作。OPENGL中渲染到纹理传统的方法是调用glCop
5、yTexImage2D()和glCopyTexSubImage2D()函数。但窗口的大小限制了纹理的使用大小,并且纹理的大小必须是2的幂。为解决这个限制,PBuffers很快成为渲染到纹理的标准方法。Pbuffers允许离屏渲图2利用FBO直接渲染到纹理染,并独立于帧缓存。但和前者有个相同的缺陷:需要从Pbuffers(framebufferobjects)上。一个FBO可以与一个以上的颜色缓到纹理的复制过程,如图1所示.为解决这个问题,出现了存,一个深度缓存和一个模板缓存绑定。一个逻辑缓存也可以WGL_ARB_render_texture扩展,它允许PBuffers直接同时与
6、多个FBOS绑定。每个FBO都有一套绑定点用来绑定多绑定纹理,避免了复制过程。然而该方法并没流行。首先,个逻辑缓存。当使用FBO时候,就可以使用离屏渲染,并将传PBuffers需要独立GL上下文,操作烦琐,上下文切换操作统的帧缓冲区自动关闭,将图像直接渲染到逻辑缓存,这样避耗费资源;其次,PBuffers拥有独立的颜色缓存、深度缓存、免了纹理复制过程,降低了计算机开销。如图2所示。模板缓存,且不能被共享,这就占用了昂贵了存储空间;最后,2.2GPU可编程渲染管道该扩展是基于Windows系统的。综上因素限制了其使用范围。使用GPU可编程渲染管道大大提高了显卡编程的灵活1http
7、://www.paper.edu.cn性,随着显卡性能的逐日提高,可以由显卡绘制出更真实的特V=M•V(2)word4x4obj效。对于环境贴图来说,如果使用了逐象素(Per-Pixel)计算,将会把效果表现的更加真实。本系统采用GLSL着色语言实现此N=M•N(3)word3x3obj功能。2.3CEM算法摄象机方向单位向量2.3.1渲染CubeMapE=normalize(e−V)(4)obj基本原理是用摄象机对周围六个方向按照一定的角度照相,获得六幅图片分别作为CubeMap的六个面如
此文档下载收益归作者所有