计算机图形学方面有关论文范文资料,与计算机图形学基础相关论文答辩
本论文是一篇计算机图形学方面有关论文答辩,关于计算机图形学基础相关开题报告范文。免费优秀的关于计算机图形学及计算机及数据结构方面论文范文资料,适合计算机图形学论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。
47;/Getapointertotheextensionfunction.typedefvoid(WINAPI*FNSWAPHINT)(GLint,GLint,GLsizei,GLsizei),fnSwapHint等于(FNSWAPHINT)wglGetProcAddress("glAddSwapHintRectWIN"),//ActualcalltoglAddSwapHintRectWIN.if(fnSwapHint!等于NULL)(*fnSwapHint)(0,0,100,100),2.3WGL扩展glGetString(GL_EXTENSIONS)取得的扩展字符串中并不包括针对Windows平台的WGL扩展,WGL扩展串要通过WGL_ARB_extensions_string扩展来获得,以下代码演示了如何获得WGL扩展串:定义WGL_ARB_extensions_string扩展新增函数wglGetExtensionsStringARB的函数指针类型,同样这个工作SGI已经为我们做好,只不过不在glext.h中,而在它提供的另外一个头文件wglext.h中:typedefconstchar*(APIENTRY*PFNWGLGETEXTENSIONSSTRINGARBPROC)(HDChdc),定义函数指针:PFNWGLGETEXTENSIONSSTRINGARBPROCwglGetExtensionsStringARB,检查是否支持WGL_ARB_extensions_string扩展,如果不支持,表示这个显卡不支持WGL扩展,如果支持,则得到wglGetExtensionsStringARB函数的指针,并调用它得到WGL扩展串:inthasWGLext等于isExtensionSupported("WGL_ARB_extensions_string"),if(hasWGLext){wglGetExtensionsStringARB等于(PFNWGLGETEXTENSIONSSTRINGARBPROC)\wglGetProcAddress("wglGetExtensionsStringARB"),constchar*wglExt等于wglGetExtensionsStringARB(hdc),等}2.4OpenGL版本一些常用的OpenGL扩展会在新版的OpenGL中加到OpenGL核心中去,成为OpenGL标准的一部分,可以简化程序开发,程序员使用这些功能时不必做繁琐的扩展初始化工作.比如多重纹理功能,在OpenGL1.2.1加入到OpenGL核心中,以前要使用多重纹理,要先检查是否支持GL_ARB_multitexture扩展,然后初始化glActiveTextureARB等函数,很麻烦,而OpenGL1.2后,则可以直接使用glActiveTexture函数.不过,这种简化只有Mac/Unix/Linux程序员才能享受到,在Windows平台上没有这么简单.微软为了维护Direct3D,对OpenGL的支持很消极,其OpenGL实现仍然是1.1.由于Windows上的OpenGL程序最终都会动态链接到微软的OpenGL32.dll,可OpenGL32.dll只支持OpenGL1.1,使我们不能直接使用新版OpenGL,仍然要用扩展访问OpenGL1.1以来新增的功能.2.5OpenGL扩展资料AllAboutOpenGLExtensions:必读.讨论OpenGL扩展机制,讲述了如何阅读扩展官方说明书,并举了一些扩展的例子.OpenGLExtensionRegistry:由SGI维护,列出了目前公开的所有扩展及其官方说明书.OpenGLHardwareRegistry:由Delphi3D.维护,列出了目前几乎所有3D加速卡的OpenGL硬件信息,包括其支持的扩展.当然,这里面列的扩展不能作为程序的依据,程序中要使用某个扩展,还是要先检查显卡是否支持.因为同样的显卡,如果驱动程序不同,支持的扩展也不相同,往往新的驱动程序会加入新的扩展,丢掉一些废弃的扩展.2.6OpenGL硬件加速在Windows平台上,OpenGL驱动可能有三种模式:纯软件,MCD和ICD:纯软件模式:微软提供一个OpenGL的软件实现,所有渲染操作均由CPU完成,速度很慢.如果安装系统时使用Windows自带的显卡驱动程序,那么OpenGL程序就会运行在软件模式下.而且由于微软有自己的Direct3D,所以对OpenGL的支持很消极,它的OpenGL纯软件实现只支持OpenGL1.1,而目前OpenGL的最新版本为1.4MCD(MiniClientDriver):MCD是早期微软在WindowsNT上支持OpenGL时,为了简化驱动开发时使用的一个模型.在这个模型中,OpenGL渲染管线的变换,光照部分仍然由软件实现,而光栅化部分则由硬件厂商实现,因此只要硬件支持,MCD可以硬件加速光栅化部分.MCD虽然可以简化驱动开发,但是功能限制太大,现在市面上的3D加速卡均支持硬件变换和光照,MCD却不能利用这一特性,看上去MCD已经没有存在的价值ICD(InstallableClientDriver):ICD是一个完整的OpenGL驱动模型,比MCD复杂得多.硬件厂商要实现完整的OpenGL渲染管线,如变换,光照,光栅化等,因此只要硬件支持,ICD可以硬件加速整个OpenGL渲染管线.我们通常说的OpenGL硬件加速就是指的通过ICD模型获得的硬件加速,而现在硬件厂商提供的OpenGL驱动程序也都是依照ICD模型开发的.主要硬件厂商的ICD已经可以支持OpenGL的最新版1.4Windows怎么实现OpenGL硬件加速呢OpenGL32.dll是微软的OpenGL1.1纯软件实现,我们的程序都要动态链接到这个dll.如果安装3D芯片厂商的驱动程序,会将一个不同名字的dll放到Windows系统目录下,比如在Windows2000下安装nVIDIAGeForce2MX的驱动程序,会在系统目录下放一个nvoglnt.dll(这就是nVIDIA的OpenGL驱动),并在注册表中登记nvoglnt.dll,让Windows知道硬件加速OpenGL驱动的名字,以后运行OpenGL程序,OpenGL32.dll就会把OpenGL调用直接转到nvoglnt.dll.Windows平台上,一个OpenGL程序是否使用硬件加速由三个因素决定,这三个因素缺一不可,否则程序都会运行于纯软件模式:是否有一块3D加速卡是否安装了显卡厂商提供的最新的驱动程序,Windows自带的显卡驱动程序并不会提供OpenGL硬件加速能力指定的像素格式是否被显卡硬件所支持判断一种像素格式是否被显卡硬件所支持,可以用函数DescribePixelFormat取得该像素格式的数据,然后看结构体PIXELFORMATDESCRIPTOR中的dwFlags的值,如果PFD_GENERIC_FORMAT被置1,并且PFD_GENERIC_ACCELERATED被置0,即(pfd.dwFlags&,PFD_GENERIC_FORMAT)&,&,!(pfd.dwFlags&,PFD_GENERIC_ACCELERATED)表明该像素格式不被显卡硬件支持,使用该像素格式的OpenGL程序将使用纯软件模式渲染PFD_GENERIC_FORMAT被置1,并且PFD_GENERIC_ACCELERATED被置1,即(pfd.dwFlags&,PFD_GENERIC_FORMAT)&,&,(pfd.dwFlags&,PFD_GENERIC_ACCELERATED)表明该像素格式被显卡硬件支持,并且程序使用MCD模式渲染PFD_GENERIC_FORMAT被置0,并且PFD_GENERIC_ACCELERATED被置0,!(pfd.dwFlags&,PFD_GENERIC_FORMAT)&,&,!(pfd.dwFlags&,PFD_GENERIC_ACCELERATED)表明该像素格式被显卡硬件支持,并且程序使用ICD模式渲染3OpenGLExtension这个软件可以自动测试显卡对OpenGL的版本支持和扩展命令.4,如何使用扩展
如果你在Windows平台下开发OpenGL程序,那么系统中自带的OpenGL库就是1.1的,如果想使用1.2
计算机图形学方面有关论文范文资料,与计算机图形学基础相关论文答辩参考文献资料: