位置: 编程技术 - 正文
推荐整理分享opengl extension,希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!
一. 概念的澄清
经常会看到论坛里面有人这样问:
哪里能下载OpenGL2.0的头文件和库文件?
其实,对于一个刚刚接触OpenGL的新手来说,如果是在Windows平台下开发,这个问题是一定会经历的,为什么呢?因为很多参考书上都会提到OpenGL2.0,但是微软对OpenGL的支持只到1.1,1.1以后微软就不再支持了,为什么,因为微软更想发展自家的DirectX。所以如果想使用OpenGL1.1以上的功能或者函数,只能使用OpenGL扩展,这些扩展是一些OpenGL团体或个人开发出来的能Windows上使用的OpenGL1.1以后的一些功能及函数。所以,在Windows上根本就没有什么OpenGL2.0的头文件或库文件了,OpenGL1.1以后的东西都已经以扩展的形式存在了,而且,并没有一个统一的标准,你可以使用glex,glew,glee等等。下面我给出两种常用的方法:
大多数人都是在运行红宝书中的程序时遇到这个问题,比如这个函数glBlendEquation,它就是GL_ARB_imaging扩展中的一个函数。所以,在使用一个扩展之前,首先要做的就是判断你的显卡是否支持该扩展。
二. 如何判断显卡所支持的扩展:
使用函数glGetString,看一下它的原型:
我们以GL_EXTENSIONS为参数调用该函数,就能获得当前显卡所支持的所有扩展,像下面这样:
const GLubyte *str = glGetString(GL_EXTENSIONS) ;
cout << str << endl ;
输出的各个扩展之间以空分隔,如果这些扩展中包含GL_ARB_imaging,那么你就可以使用glBlendEquation这个函数了。
当然,这样查询的只是gl扩展,还可以用gluGetString获得glu扩展。
三. 使用扩展函数
在判断了显卡所支持的扩展以后,就可以使用该扩展中所包含的函数了下面详细介绍两种使用扩展函数的具体方法:
使用glext
这里下载:( 这个文件并不是Windows系统中原有的,需要到网上下载。使用的时候有一点要注意,如果程序中还用到了glut.h文件,那么一定要把glext.h放在glut.h的后面,因为glext.h要用到gl.h,而glut.h中包含了gl.h,如果顺序搞错了,编译的时候会有一大堆错误,正确的顺序如下:
#include <iostream>
#include <windows.h>
#include <GL/glut.h>
#include <GL/glext.h>
b)获取函数指针
先定义函数指针,PFNGLBLENDEQUATIONPROC glBlendEquation = NULL;
再获取函数地址, 使用wglGetProcAddress函数,注意这一句要加在使用glBlendEquation函数的语句之前才有效,最后后面紧跟着使用glBlendEquation的函数语句,切记不要加在所有子程序的外面,否则获取的指针是无效的
glBlendEquation = (PFNGLBLENDEQUATIONPROC)wglGetProcAddress("glBlendEquation");
例如可以这样加:
PFNGLBLENDEQUATIONPROC glBlendEquation = (PFNGLBLENDEQUATIONPROC)wglGetProcAddress("glBlendEquation");
switch(key)
{
case 'a':
case 'A':
//Note: glBlendEquation is a subset of GL_ARB_imaging, please call glGetString
//first to confirm whether your video card support this extension.
glBlendEquation(GL_FUNC_ADD) ;
break ;
case 's':
case 'S':
glBlendEquation(GL_FUNC_SUBTRACT) ;
break ;
如果觉得上面的方法麻烦,那么可以使用下面的方法:我推荐这种方法:
1. 使用glew
glew也是一个扩展库,包含了OpenGL中许多核心及扩展函数,现在的版本是1.3.5,支持OpenGL2.1,可以到这里下载:
<GL/glew.h>
#include <GL/glut.h>
然后就可以在程序中直接使用glBlendEquation了,其他扩展的判断和使用方法与此类。
最后还有一点切记!那就是还要调用glewInit() ;来初始化一下方可使用扩展,如下:
GLenum err = glewInit() ;
if (GLEW_OK != err)
{
MessageBoxA(NULL, "error", "My Window", 1) ;
}
.在project->setting中,打开link选项卡,加上glew.lib 或在文件中加上#progmma comment(lib, "glew.lib")
好了,现在可以放心使用扩展了,赶快继续你的OpenGL之旅吧!
说明:上面的链接都是国外的官方站点链接,所以如果上不去外网,我可以给大家传一份
再提供几个好一点的OpenGL站点:
第一位:当然是
OpenGL简单绘制游戏角色阴影 在游戏开发中很多Q版游戏绘制角色阴影会简单的绘制一个半透明的椭圆,如下图:这种方法的优点是实现简单,但表现效果明显不够真实。作为Q版风尚
OpenGL中的光照与材料 OpenGL中的光照与材料在OpenGL光照模型中,除非一个物体自己会发光,否则它将受到3种不同类型的光的照射,这3种不同类型的光分别是:环境光(ambient
openGL ES 2.0 初始化(I) ok、好了今天学习了openGLES2.0现在把今天学习到的东东做一个总结,本demo是运行在安装有androidsdk的Eclipse上实现的:好了总结开始:起先是ShaderUtil.java文
标签: opengl extension
本文链接地址:https://www.jiuchutong.com/biancheng/373167.html 转载请保留说明!友情链接: 武汉网站建设