计算机图形学方面有关论文范文资料,与计算机图形学基础相关论文答辩
本论文是一篇计算机图形学方面有关论文答辩,关于计算机图形学基础相关开题报告范文。免费优秀的关于计算机图形学及计算机及数据结构方面论文范文资料,适合计算机图形学论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。
发商抛弃繁琐的OpenGL1.X,转用更具弹性的"纯OpenGL2.0".1.5opengl2.1
OpenGLversion2.1在2006年8月2日发布,是最初版本1.0后的第七个版本.尽管增加了版本的层析,支持高层析的编程shaders,但版本能够适于早期的版本,意味着运行2.0,1.5,1.4,1.3,1.2,1.1,or1.0GL的程序不用任何改变就可运行.
OpenGL2.1与当前的2.0版本相比,虽然版本号变更不如DX9到DX10那么巨大,但它却增加了多项实用的技术和功能,例如向后兼容增强型OpenGL的先进管道规划,其中包括:优化GPU和显存之间并行工作时间,提高象素缓冲和对象的象素和质感快速缓冲利用率,增加标准彩色图像质感sRGB色彩空间应用促进管理的灵活性,并增加了许多新的shader弹性调配,包括非平方矩阵支持,支持阵列流对象和碎块点位置时,干扰和shaders属性不变的变量shader代码提高可靠性.1.GLSL升级至1.2版,2.支持非正方形的矩阵.UniformMatrix{2x3,3x2,2x4,4x2,3x4,4x3}fv,3.象素缓冲对象(PixelBufferObject).它扩充了缓冲对象的接口.现在缓冲区对象可以支持顶点数组和象素数据了.象素缓冲对象能加速在GPU内存中进行的缓冲区之间的数据拷贝及其他象素操作.,4.sRGB纹理.遵循IEC61966-2-1.标准的sRGB颜色空间的纹理格式(包括压缩和非压缩格式).(OpenGL2.1addsbackwardspatibleenhancementstoOpenGL'sadvancedprogrammablepipelineincluding:PixelBufferObjectsforfasttextureandpixelcopiesbetweenframebufferandbufferobjectsinGPUmemory,textureimagesspecifiedinstandardsRGBcolorspaceforenhancedapplicationcolormanagementflexibility,andnumerousadditionstoincreasetheflexibilityofshaderprogrammingincludingnon-squarematrixsupport,supportforarraysasfirst-classobjects,afragmentpositionqueryinshadersusingPointSpritesandaninvariantattributeforvariablestoenhanceshadercodereliability.)
OpenGL2.1的效果
2OpenGL扩展(OpenGLExtensions)
OpenGL和Direct3D比较起来,最大的一个长处就是其扩展机制.硬件厂商开发出一个新功能,可以针对新功能开发OpenGL扩展,软件开发人员通过这个扩展就可以使用新的硬件功能.所以虽然显卡的发展速度比OpenGL版本更新速度快得多,但程序员仍然可以通过OpenGL使用最新的硬件功能.而Direct3D则没有扩展机制,硬件的新功能要等到微软发布新版DirectX后才可能支持.OpenGL扩展也不是没有缺点,正因为各个硬件厂商都可以开发自己的扩展,所以扩展的数目比较大,而且有点混乱,有些扩展实现的相同的功能,可因为是不同厂商开发的,接口却不一样,所以程序中为了实现这个功能,往往要为不同的显卡写不同的程序.这个问题在OpenGL2.0出来后可能会得到解决,OpenGL2.0的一个目标就是统一扩展,减少扩展数目.
2.1扩展名每个扩展都有一个扩展名,扩展名类似如下形式:GL_ARB_multitexture第一段GL,用来表示针对OpenGL哪部分开发的扩展,有以下几个值:GL–针对OpenGL核心的扩展WGL–针对Windows平台的扩展GLX–针对Unix/Linux平台的扩展GLU–针对OpenGLUtilityLibrary的扩展第二段ARB,用来表示是谁开发的这个扩展,常见以下几个值:ARB–经OpenGLArchitectureReviewBoard(OpenGL管理机构)正式核准的扩展,往往由厂商开发的扩展发展而来,如果同时存在厂商开发的扩展和ARB扩展,应该优先使用ARB扩展EXT–被多个硬件厂商支持的扩展NV–nVIDIA公司开发的扩展ATI–ATI公司开发的扩展ATIX–ATI公司开发的实验性扩展SGI–SiliconGraphics(SGI)公司开发的扩展SGIX–SiliconGraphics(SGI)公司开发的实验性扩展第三段multitexture就是真正的扩展名了,如multitexture就是多重纹理扩展.2.2使用OpenGL扩展要使用一个OpenGL扩展,首先必须检查显卡是否支持这个扩展,以下代码可以获取一个显卡支持的的OpenGL扩展:constchar*str等于glGetString(GL_EXTENSIONS),函数返回一个字符串指针,这个字符串就是显卡所支持的所有扩展的扩展名,不同的扩展名之间用空格隔开,形如:"GL_ARB_imagingGL_ARB_multitextureGL_ARB_point_parameters等"OpenGL扩展往往都会新增一些函数,在Windows平台上,这些函数不是通过.lib库连接到程序里的,而要在运行时动态获得函数的指针.我们以GL_ARB_point_parameters扩展为例看看怎么获得函数指针.首先要定义函数指针类型,typedefvoid(APIENTRY*PFNGLPOINTPARAMETERFARBPROC)(GLenumpname,GLfloatparam),typedefvoid(APIENTRY*PFNGLPOINTPARAMETERFVARBPROC)(GLenumpname,constGLfloat*params),这个工作SGI已经为我们做好,它提供了一个头文件glext.h,里面有目前绝大多数扩展的常量和函数指针定义,下载下来放到编译器的include/GL文件夹下面,然后在程序里面加上:#include<,GL/glext.h>,就可以在程序中使用常量和函数指针类型了.然后要定义函数指针:PFNGLPOINTPARAMETERFARBPROCglPointParameterfARB,PFNGLPOINTPARAMETERFVARBPROCglPointParameterfvARB,再检查显卡是否支持GL_ARB_point_parameters扩展,其中isExtensionSupported是自定义的一个函数,就是在glGetString(GL_EXTENSIONS)返回的字符串里查找是否存在指定的扩展名:inthasPointParams等于isExtensionSupported("GL_ARB_point_parameters"),如果支持,就可以用wglGetProcAddress函数获取扩展函数的指针:if(hasPointParams){glPointParameterfARB等于(PFNGLPOINTPARAMETERFARBPROC)\wglGetProcAddress("glPointParameterfEXT"),glPointParameterfvARB等于(PFNGLPOINTPARAMETERFVARBPROC)\wglGetProcAddress("glPointParameterfvEXT"),}最后就可以在程序里使用扩展函数:if(hasPointParams){staticGLfloatquadratic[3]等于{0.25,0.0,1/60.0},glPointParameterfvARB(GL_DISTANCE_ATTENUATION_ARB,quadratic),glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB,1.0),}另外,下面代码说明如何访问扩展函数:(资料来源于csdn知识库)调用wglGetProcAddress函数访问一个不在标准OpenGL库中的扩展函数.如果该扩展函数存在当前的执行(implementation)中,那么wglGetProcAddress返回一个用来访问该函数的函数指针.否则,wglGetProcAddress返回NULL.例如,要访问glAddSwapHintRectWIN扩展函数,如下调用wglGetProcAddress:
计算机图形学方面有关论文范文资料,与计算机图形学基础相关论文答辩参考文献资料: