OpenGL 选项 要opengl在哪里设置关掉?

1473人阅读
&&&&& glut是OpenGL应用工具包(OpenGL Utility Toolkit),它为OpenGL提供了一个简易的窗口平台,使程序员不用过多的关心与平台相关的窗口系统。&&&&& 建立工程时,我们一般都建立控制台程序(在vc6中即console win32 application)来使用glut库。但是在控制台程序下,运行时都会跳出控制台窗口,很不美观,我们可以用下面的方法将控制台窗口去掉:&&&&& #pragma comment(linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"" )在主函数所在的cpp文件的顶部加上上面的宏,就可以轻松将控制台窗口去掉,这样就只剩下glut窗口了。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:235673次
积分:2922
积分:2922
排名:第6468名
原创:43篇
转载:67篇
评论:71条
(5)(7)(3)(1)(13)(6)(6)(4)(4)(3)(1)(1)(4)(5)(6)(7)(7)(7)(7)(2)(1)(7)(3)OpenGLOpenGL(TM)是行业领域中最为广泛的2D/3D图形API,&其自诞生至今已催生了各种平台及设备上的数千优秀应用程序。OpenGL(TM)是独立于视窗或其它操作系统的,亦是网络的。在包含CAD、内容创作、能源、、开发、制造业、制药业及虚拟现实等行业领域中,OpenGL(TM)帮助实现在PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力处理软件的开发。
OpenGL的前身是SGI公司为其图形工作站开发的IRIS&GL。IRIS&GL是一个工业标准的3D图形软件接口,功能虽然强大但是移植性不好,于是SGI公司便在IRIS&GL的基础上开发了OpenGL。OpenGL的英文全称是“Open&Graphics&Library”,顾名思义,OpenGL便是“开放的图形程序接口”。虽然DirectX在家用市场全面领先,但在专业高端绘图领域,OpenGL是不能被取代的主角。
OpenGL是个与硬件无关的接口,可以在不同的平台如Windows&95、Windows&NT、Unix、Linux、MacOS、OS/2之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。由于OpenGL是图形的底层图形库,没有提供几何实体图元,不能直接用以描述场景。但是,通过一些转换程序,可以很方便地将AutoCAD[2]&、3DS/3DSMAX[3]&等3D图形设计软件制作的DXF和3DS模型文件转换成OpenGL的顶点数组。
在OpenGL的基础上还有Open&Inventor、Cosmo3D、Optimizer等多种高级图形库,适应不同应用。其中,Open&Inventor应用最为广泛。该软件是基于OpenGL面向对象的工具包,提供创建交互式3D图形应用程序的对象和方法,提供了预定义的对象和用于交互的事件处理模块,创建和编辑3D场景的高级应用程序单元,有打印对象和用其它图形格式交换数据的能力。OpenGL生成的3D地形OpenGL的发展一直处于一种较为迟缓的态势,每次版本的提高新增的技术很少,大多只是对其中部分做出修改和完善。1992年7月,SGI公司发布了OpenGL的1.0版本,随后又与微软公司共同开发了Windows&NT版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件也可以在微机上运用。1995年OpenGL的1.1版本面市,该版本比1.0的性能有许多提高,并加入了一些新的功能。其中包括改进打印机支持,在增强元文件中包含OpenGL的调用,顶点数组的新特性,提高顶点位置、法线、颜色、色彩指数、纹理坐标、多边形边缘标识的传输速度,引入了新的纹理特性等等。OpenGL&1.5又新增了“OpenGL&Shading&Language”,该语言是“OpenGL&2.0”的底核,用于着色对象、顶点着色以及片断着色技术的扩展功能。
OpenGL&2.0标准的主要制订者并非原来的SGI,而是逐渐在ARB中占据主动地位的3DLabs。2.0版本首先要做的是与旧版本之间的完整兼容性,同时在顶点与及管理上与DirectX共同合作以维持均势。OpenGL&2.0将由OpenGL&1.3的现有功能加上与之完全兼容的新功能所组成(如图一)。借此可以对在ARB停滞不前时代各家推出的各种纠缠不清的扩展指令集做一次彻底的精简。此外,硬件可编程能力的实现也提供了一个更好的方法以整合现有的扩展指令。
目前,随着DirectX的不断发展和完善,OpenGL的优势逐渐丧失,至今虽然已有3Dlabs提倡开发的2.0版本面世,在其中加入了很多类似于DirectX中可编程单元的设计,但厂商和用户的认知程度并不高,未来的OpenGL发展前景迷茫。
1992年7月,SGI公司发布了OpenGL的1.0版本,随后又与微软公司共同开发了Windows&NT版本的OpenGL,从而使一些原来必须在高档图形工作站上运行的大型3D图形处理软件也可以在微机上运用。
1995年OpenGL的1.1版本面市,该版本较1.0性能提高许多,并加入了一些新的功能。包括提高顶点位置、法线、颜色、色彩指数、纹理坐标、多边形边缘标识的传输速度,引入了新的纹理特性等等。
1997年,Windows&95下3D游戏的大量涌现,游戏开发公司迫切需要一个功能强大、兼容性好的3D图形接口,而当时微软公司自己的3D图形接口DirectX&3.0功能却是很糟糕。因而以制作《雷神之锤》等经典3D射击而著名的id公司同其它一些游戏开发公司一同强烈要求微软在Windows&95中加入对OpenGL的支持。微软公司最终在Windows&95的OSR2版和后来的Windows&版本中加入了对OpenGL的支持。这样,不但许多支持OpenGL的电脑3D游戏得到广泛应用,而且许多在3D图形设计软件也可以运用支持OpenGL标准的3D加速卡,大大提高其3D图形的处理速度。
2003年的7月28日,SGI和ARB公布了OpenGL&1.5。OpenGL&1.5中包括OpenGL&ARB的正式扩展规格绘制语言“OpenGL&Shading&Language”。OpenGL&1.5的新功包括:顶点Buffer&Object、Shadow功能、隐蔽查询、非乘方纹理等。
2004年8月,OpenGL2.0版本发布~OpenGL&2.0标准的主要制订者并非原来的SGI,而是逐渐在ARB中占据主动地位的3Dlabs。OpenGL2.0支持OpenGL&Shading&Language、新的shader扩展特性以及其他多项增强特性。
2008年8月初Khronos工作组在Siggraph&2008大会上宣布了OpenGL&3.0图形接口规范,GLSL1.30&shader语言和其他新增功能将再次对未来开放3D接口发展指明方向。
OpenGL&3.0&API开发代号为Longs&Peak,和以往一样,OpenGL&3.0仍然作为一个开放性和跨平台的3D图形接口标准,在Shader语言盛行的今天,OGL3.0增加了新版本的shader语言:GLSL&1.30,可以充分发挥当前可编程图形硬件的潜能。同时,OGL3.0还引入了一些新的功能,例如顶点矩阵对象,全帧缓存对象功能,32bit浮点纹理和渲染缓存,基于阻塞队列的条件渲染,紧凑行半浮点顶点和像素数据,四个新压缩机制等等。
2009年3月又公布了升级版新规范OpenGL&3.1,也是这套跨平台免费API有史以来的第九次更新。OpenGL&3.1将此前引入的OpenGL着色语言“GLSL”从1.30版升级到了1.40版,通过改进程序增强了对最新可编程图形硬件的访问,还有更高效的顶点处理、扩展的纹理功能、更弹性的缓冲管理等等。宽泛地讲,OpenGL&3.1在3.0版的基础上对整个API模型体系进行了简化,可大幅提高软件开发效率。
2009年8月Khronos小组发布了OpenGL&3.2,这是一年以来OpenGL进行的第三次重要升级。该版本仍然延续了OpenGL发展的方向让图形程序开发者能在多种操作系统和平台下更好的利用新的GPU功能。OpenGL3.2版本提升了性能表现、改进了视觉质量、提高了几何图形处理速度,而且使Direct3D程序更容易移植为OpenGL。除OpenGL之外,Khronos还将其开发的其它标准进行了协调改进,以求可以在更广泛的领域提供强大的图形功能和计算生态系统,这些标准包括用于并行计算的OpenCL、用于移动3D图形开发的OpenGL&ES和用于网络3D开发的WebGL。
日发布OpenGL&4.1和OpenGL&OpenGL&Shading&Language&4.10。OpenGL4.1提高视觉密集型应用OpenCL(TM)的互操作性,并继续加速计算剖面为核心的支持和兼容性第一次推出的OpenGL&3.2,使开发人员能够使用一个简化的API或保留向后兼容现有的OpenGL代码,这取决于他们的市场需求。
Khronos旗下的OpenGL&ARB(Architecture&Review&Board)工作组推出了GLSL&1.5OpenGLShading&Language(OpenGL着色语言)的升级版,以及在OpenGL3.2框架下推出了两个新功能,可以让开发者在开发新程序时能够在使用流水线内核特性或兼容性特性之间做出选择,其中兼容性特性会提供与旧版OpenGL之间的兼容性。
日在温哥华举行的SIGGRAPH&2011大会上Khronos发布了新的OpenGL&4.2标准细节,对于支持现有硬件的API加入了部分新的支持特性。和OpenGL&4.1一样,OpenGL&4.2主要应用于DX11级别硬件如NVIDIA&GeForce&400/500,Radeon&HD&系列显卡,不过NVIDIA的开发者社区之前曾经表示部分特性可通过扩展功能在最老支持OpenGL2/DX9级别的硬件上实现。
OpenGL是一个开放的软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL可以与Visual&C++紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性;OpenGL使用简便,效率高。它具有七大功能:
1.建模:OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面绘制函数。
2.变换:OpenGL图形库的变换包括基本变换和投影变换。基本变换有平移、旋转、缩放、镜像四种变换,投影变换有平行投影(又称正射投影)和透视投&影两种变换。其变换方法有利于减少算法的运行时间,提高三维图形的显示速度。
3.颜色模式设置:OpenGL颜色模式有两种,即RGBA模式和颜色索引(Color&Index)。
4.光照和材质设置:OpenGL光有自发光(Emitted&Light)、环境光(Ambient&Light)、漫反射光(Diffuse&Light)和高光(Specular&Light)。材质是用光反射率来表示。场景(Scene)中物体最终反映到人眼的颜色是光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色。
5:纹理映射(Texture&Mapping)。利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。
6:位图显示和图象增强图象功能除了基本的和像素读写外,还提供融合(Blending)、抗锯齿(反走样)(Antialiasing)和雾(fog)的特殊图象效果处理。以上三条可使被仿真物更具真实感,增强图形显示的效果。
7:双缓存动画(Double&Buffering)双缓存即前台缓存和后台缓存,简言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。
此外,利用OpenGL还能实现深度暗示(Depth&Cue)、运动模糊(Motion&Blur)等特殊效果。从而实现了消隐算法。OpenGL设备运用,目前瑞芯微2918芯片和英伟达芯片Tegra2&就是采用OpenGL&2.0技术进行图形处理,而基于瑞芯微2918芯片方案代表是台电T760和微蜂X7平板电脑所采用到。
OpenGL被设计为只有输出的,所以它只提供渲染功能。核心API没有窗口系统、音频、打印、键盘/鼠标或其它输入设备的概念。虽然这一开始看起来像是一种限制,但它允许进行渲染的代码完全独立于他运行的操作系统,允许跨平台开发。然而,有些整合于原生窗口系统的东西需要允许和宿主系统交互。这通过下列附加API实现:
*&GLX&-&X11(包括透明的网络)
*&WGL&-&Microsoft&Windows
*&AGL&-&Apple&MacOS
另外,GLUT库能够以可移植的方式提供基本的窗口功能。
日,Khronos&Group组织也公布了桌面版OpenGL的最新版本4.3,也算是给这个3D&API二十岁生日的最好礼物。&1992年,OpenGL&1.0诞生,此后历经二十年发展,先后衍生了四个世代,功能日渐强大,普及范围也是越来越广。虽然它没有微软DirectX在游戏中那么风光,但也在专业图形等领域成为众多开发者的首选,而且陆续衍生了OpenGL&ES、OpenCL、WebGL等一帮同门师兄弟,生态系统日臻完善。
OpenGL仍然是唯一能够取代微软对3D图形技术的完全控制的API。它仍然具有一定的生命力,但是Silicon&Graphics已经不再以任何让微软不悦的方式推广OpenGL,因而它存在较高的风险。游戏开发人员是一个有着独立思想的群体,很多重要的开发人员目前仍然在使用OpenGL。因此,硬件开发商正在设法加强对它的支持。Direct3D目前还不能支持高端的图形设备和专业应用;&OpenGL在这些领域占据着统治地位。最后,开放源码社区(尤其是Mesa项目)一直致力于为任何类型的计算机(无论它们是否使用微软的操作系统)提供OpenGL支持。
目前,国外的三维游戏开发技术,从创意、策划、研究开发与实现,到游戏的运营与维护,都有大量的知识值得学习和摸索。由于&Linux&操作系统平台的大力推广,基于Linux&的各种应用软件也不断壮大,因此基于跨平台图形库的跨平台三维游戏开发也越来越受重视。OpenGL(open&graphics&library)是一种独立的平台无关的三维图形开发库,在各种语言下进行主框架开发并结合应用OpenGL&函数都可以开发出三维游戏。但是由于框架开发的平台相关性使游戏无法跨平台编译运行,因此glut+OpenGL&的方式成了一种很好的选择。但是在对复杂框架和各种媒体的支持方面,glut&并不理想。在Linux&下可以采用FLTK&等框架平台技术实现包括按钮在内的比较复杂的框架功能,但是需要专门的Linux&开发环境,众多的Window&环境下的KDE&爱好者明显对此无法适从。相反,SDL(Simple&DirectMedia&Layer)作为免费的跨平台多媒体应用编程接口,已经被人们广泛用于开发二维游戏,其优秀的消息框架支持、文件支持和声音支持等都使得它成为能与微软DirectX&匹敌的最为成熟的技术之一。
截止日,Khronos&Group公布了最新的OpenGL&4.3规范。
扩展当独立厂商创建一种新技术时,OpenGL标准允许它们通过“扩展”的方法提供所扩展的功能。然后一个扩展就分成两部分发布:包含扩展函数原型的头文件和作为厂商的设备驱动。每个厂商有一个用于命名它们的新函数和常量的字母缩写。例如,NVIDIA的缩写(“NV”)用于定义它们的专有函数“glCombinerPara-
meterfvNV()”和它们的常量“GL_NORMAL_MAP_NV”。如果多于一个厂商同意实现相同的扩展功能,那么就用缩写“EXT”。进一步,架构评审委员会可能“祝福”这个扩展,那么这就被称为一个“标准扩展”,使用缩写“ARB”。第一个ARB扩展是GL_ARB_multitexture。根据官方扩展提升路径,多纹理不再是可选实现的ARB扩展,它已经是OpenGL&1.4以后的核心API的一部分。
几个库创建在OpenGL之上,提供了OpenGL本身没有的功能:
6)FREEGLUT(GLUT已经于1998年不再更新了。于是就有了freeglut)
特别是,OpenGL&Performer库——由SGI开发并可以在IRIX、Linux和Microsoft&Windows的一些版本上使用,构建于OpenGL,可以创建实时可视化仿真程序。
当开发者需要使用最新的OpenGL扩展时,他们往往需要使用GLEW或者是GLEE库提供的功能,可以在程序的运行期判断当前硬件是否支持相关的扩展,防止程序崩溃甚至造成硬件损坏。绑定为了加强它的多语言和多平台特性,已经用很多语言开发了OpenGL的各种绑定和移植。最值得注意的是,Java3D库已经可以利用OpenGL(另一个选择可能是DirectX)作为它的硬件加速了。OpenGL官方网页[5]&列出了用于Java、Fortran90、Perl、Pike、Python、Ada和Visual&Basic的多个绑定。规范Khronos&Group在2009年3月又公布了升级版新规范OpenGL&3.1,也是这套跨平台免费API有史以来的第九次更新。
OpenGL&3.1将此前引入的OpenGL着色语言“GLSL”从1.30版升级到了1.40版,通过改进程序增强了对最新可编程图形硬件的访问,还有更高效的顶点处理、扩展的纹理功能、更弹性的缓冲管理等等。宽泛地讲,OpenGL&3.1在3.0版的基础上对整个API模型体系进行了简化,可大幅提高软件开发效率。
OpenGL&3.1主要新特性:Texture&Buffer&Objects(纹理缓冲对象)、Uniform&Buffer&Objects(统一缓冲对象)、Signed&Normalized&Textures(符号正常化纹理)、Primitive&Restart(基本元素重启)、Instancing(实例化)、CopyBuffer&API(拷贝缓冲接口)……
与OpenGL&3.1规范同步,OpenGL架构评审委员会(ARB)也发布了一个兼容性扩展,能让开发人员在访问OpenGL&3.1里已经删除的OpenGL&1.x/2.x功能,确保应用程序的全面向下兼容性。
OpenGL&3.1公布后,业界图形厂商很快予以了大力支持。AMD&OpenGL主管Suki&Samra表示:“AMD全面用户OpenGL&API,会在今后的Radeon和FirePro产品驱动程序中支持OpenGL&3.1。”NVIDIA市场营销副总裁Dan&Vivoli表示:“NVIDIA承诺尽快部署OpenGL&3.1,我们也很自豪地在规范公布同一天放出了自己的测试版驱动程序。”
市场调研机构Jon&Peddie&Research预测,OpenGL&3.1规范图形硬件的安装规模将超过1亿。AMD、NVIDIA、S3&Graphics的显卡驱动都已经支持OpenGL&3.0。相关信息1995年至1996年,微软实行了一项新计划,以支持在Windows95上运行游戏,目标是把市场扩展到被任天堂和世嘉控制的游戏领域。然而,微软不想用已经在NT上提供的OpenGL技术。微软收购了Rendermorphics,Ltd.并得到他的被称作RealityLab的3D&API。经重新整理,微软发布了新的3D&API——Direct3D。
微软,推行Direct3D,冻结OpenGL!
微软当时拒绝了在Window95上支持OpenGL。不止如此,微软采取异常手段收回对OpenGL的MCD驱动接口的支持,以致硬件厂商不得不放弃已经进入最后测试的OpenGL驱动。微软的市场部门开始向游戏开发商、硬件厂商、新闻出版机构推销Direct3D,同时排斥OpenGL。
Silicon&Graphics和很多OpenGL用户都依赖OpenGL创新且高性能的技术。但很明显微软打算用Direct3D代替OpenGL,尽管D3D有很多问题而且不能像OpenGL那样被硬件厂商扩展。Silicon&Graphics决定在1996&SIGGRAPH会议上作一项演示。演示证明OpenGL至少和D3D一样快,从而驳倒微软的市场论调。因为OpenGL是业界公认标准,比D3D功能丰富,而且图像质量要高一些,所以演示在计算机图形和游戏开发社区导致了激烈论战。
游戏开发者要求OpenGL和D3D站在同等地位!
当技术和市场问题暴露,强烈的支持OpenGL行动开始了。Doom的开发者John&Carmack声明拒绝D3D,Chris&Hecker在游戏开发杂志上发表了两套API的全面分析,以微软应放弃D3D为结论。游戏开发者先后两次向微软递交请愿书。第一次由56名首席游戏开发者要求微软发行OpenGL&MCD驱动,但未成功,因为会让OpenGL与D3D竞争。第二次的公开信由254人签名开始,截止时达到1400人。微软的回答仍是重申旧市场立场。尽管请愿者清楚的要求两套API同等竞争以促进发展,微软却以增加D3D的投资、更加减少OpenGL的投资为回应。
Fahrenheit——D3D与OpenGL的合并?
Silicon&Graphics,Microsoft,&HP,Intel达成协议联合开发下一代3D&API——Fahrenheit。但不了了之,因为微软的打算是把OpenGL的技术用到D3D里并且以此之名驱除OpenGL的威胁。(估计DirectX&8&Graphics即是剩下微软独自开发的Fahrenheit,吸收了OpenGL的很多东西。)
OpenGL豪气不减当年!
OpenGL依然是唯一能与微软单独控制的D3D对立的API,尽管Silicon&Graphics不再以任何微软不能接受的方式推行OpenGL。游戏开发这是独立的,并且很多关键人物在用OpenGL,因此,硬件厂商正努力提高对其支持。D3D仍不能支持高端图像和专业应用,而OpenGL主宰着这些土地。在开放原码社区,Mesa项目正提供独立于微软的OpenGL驱动。
译者注:表面上好像D3D比OpenGL支持更多的功能,其实由于D3D不支持硬件扩展,如硬件全景阴影,硬件渲染顺序无关半透明材质等新技术根本无法使用,而D3D(特指D3D8)本身提供的功能只有一小部分能在使用HAL且硬件不支持时模拟,你要用大量代码分析硬件能力和采取不同策略。
为本词条添加和相关影像
互动百科的词条(含所附图片)系由网友上传,如果涉嫌侵权,请与客服联系,我们将按照法律之相关规定及时进行处理。未经许可,禁止商业网站等复制、抓取本站内容;合理使用者,请注明来源于。
登录后使用互动百科的服务,将会得到个性化的提示和帮助,还有机会和专业认证智愿者沟通。
您也可以使用以下网站账号登录:
此词条还可添加&
编辑次数:21次
参与编辑人数:14位
最近更新时间: 06:38:50
贡献光荣榜
扫描二维码用手机浏览词条
保存二维码可印刷到宣传品
扫描二维码用手机浏览词条
保存二维码可印刷到宣传品我装了photoshop cs6,可是openGL的选项不能勾,人家说32位的不能勾64位才可以。我家是32位的。怎么办?
内容为广告/垃圾,我要举报!
特聘专家具有协助内容审核的特权
举报后内容将不能在前台展示
错乱举报会导致该权利被剥夺
选择举报原因&
求求你们啦!50分够不!!!我很急
已有1条答案
不是那个事,是你的显卡不支持 在哪都不知道,愁,这再说呢,你先打开PS cs6然后,最上面的编辑里————拉到最下面,应该是很长的菜单,下面是箭头,在点箭头才能看到最后一个选项是“首选项”点首选项然后点首选项里的第一个常规,然后会弹出一个窗口,在窗口里的左面选性能,然后在右边性能页面里的右下角有个高级选项,点进去,然后你就看到了,显卡要是好的话,就直接选用下拉菜单里的高级,要是显卡不好就选下拉菜单里的基本,他自动就能点上OPENGL了!
选择举报原因&
微信公众账号ZOL问答堂
关注微信,随时随地解答您的疑惑
ZOL问答堂官方微博@ZOL问答堂
微信公众账号
我想下载Photoshopcs6,请问谁能给我一个不用注册的PS?
哪里可以下载photoshop cs6简体中文完整破解版
没找到想要的答案?那就登录提问吧原文地址:
垂直同步是涉及到显卡和显示器的一个概念。
当开启了垂直同步,显卡在渲染完成一帧图像之后,显卡需要等待垂直同步信号的到来,
否则无法绘制下一帧。
启用垂直同步,将限制画面更新率和显示器一样,也就是限制了FPS(帧率)。
有关资料(没有完全证实):
在nvidia系列的显卡,垂直同步默认是启用的;
在ATI&&&系列的显卡,垂直同步默认是不启用的;
在OpenGL中设置垂直同步开关的代码如下:
typedef BOOL (APIENTRY *PFNWGLSWAPINTERVALFARPROC)( int );
PFNWGLSWAPINTERVALFARPROC wglSwapIntervalEXT = 0;
wglSwapIntervalEXT = (PFNWGLSWAPINTERVALFARPROC)wglGetProcAddress(&wglSwapIntervalEXT&);
wglSwapIntervalEXT(1);//打开垂直分布,限制帧率
wglSwapIntervalEXT(0);//关闭垂直分布,充分发挥显卡的渲染能力
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&-----------------------------------------------------------------------------------------------------------------------------------------------------------以上摘自【新浪网】
关闭opengl默认的垂直同步机制,让你的FPS飞起来
opengl默认情况下,SwapBuffers是和屏幕刷新率同步的,所以你设置的显示器刷新率是60的话,你的opengl程序的FPS只有在60帧。包括nehe的例子程序都是如此,如果要关闭垂直同步功能,需要使用opengl的扩展接口。贴上代码。
typedef void (APIENTRY *PFNWGLEXTSWAPCONTROLPROC) (int);
typedef int (*PFNWGLEXTGETSWAPINTERVALPROC) (void);
PFNWGLEXTSWAPCONTROLPROC wglSwapIntervalEXT = NULL;
PFNWGLEXTGETSWAPINTERVALPROC wglGetSwapIntervalEXT = NULL;
// 初始化函数指针接口
bool InitVSync()
char* extensions = (char*)glGetString(GL_EXTENSIONS);
if (strstr(extensions,&WGL_EXT_swap_control&)) {
wglSwapIntervalEXT = (PFNWGLEXTSWAPCONTROLPROC)wglGetProcAddress(&wglSwapIntervalEXT&);
wglGetSwapIntervalEXT = (PFNWGLEXTGETSWAPINTERVALPROC)wglGetProcAddress(&wglGetSwapIntervalEXT&);
// 判断当前状态是否为垂直同步
bool IsVSyncEnabled()
return (wglGetSwapIntervalEXT() & 0);
// 开启和关闭垂直同步
void SetVSyncState(bool enable)
if (enable)
wglSwapIntervalEXT(1);
wglSwapIntervalEXT(0);
bool isOk = InitVSync();&
if (isOk) {
SetVSyncState(false);
这样在初始化的地方使用这些代码可以关闭垂直同步功能,这样FPS可以变的很高。
注意: 需要加入下面的这些代码才能正常编译。
// 包含windows的头文件
#include &windows.h&
// 包含opengl需要用到的头文件(完整的vs编辑器中会自带这些文件)
#include &gl/gl.h&
#include &gl/glu.h&
#include &gl/glaux.h&
// 设置链接时的库文件
#pragma comment(lib, &OPENGL32.LIB&)
#pragma comment(lib, &glu32.lib&)
#pragma comment(lib, &glaux.lib&)&
---------------------------------------------------------------------------------------------------------------------------------------------------
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:3846462次
积分:50879
积分:50879
排名:第32名
原创:71篇
转载:3983篇
评论:780条
声明:早期转载的文章未标明转载敬请原谅,以后将陆续改过来,向原创者致敬!
有问题可留言
痞子龙3D编程
QQ技术交流群:
(93)(114)(128)(159)(168)(40)(45)(43)(38)(5)(6)(7)(2)(3)(7)(24)(5)(5)(16)(17)(16)(66)(7)(55)(2)(37)(16)(1)(10)(6)(37)(5)(31)(18)(31)(128)(333)(203)(256)(59)(78)(57)(16)(39)(10)(27)(16)(8)(26)(32)(53)(56)(45)(142)(228)(6)(10)(6)(9)(6)(9)(22)(25)(18)(83)(208)(442)(111)(32)(1)OpenGL绘图相关函数_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
OpenGL绘图相关函数
上传于||暂无简介
大小:776.00KB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢

我要回帖

更多关于 opengl在哪里设置 的文章

 

随机推荐