OpenGL学习笔记:版本和扩展
来源:互联网 发布:java md5加密是否可逆 编辑:程序博客网 时间:2024/04/29 00:49
可以通过以下方法获取自己系统中的OpenGL版本:
const char* version = (const char*)glGetString(GL_VERSION);
printf("OpenGL 版本:%s/n", version);
glGetString(GL_VENDOR); 返回OpenGL的提供厂商。
glGetString(GL_RENDERER); 返回执行OpenGL渲染的设备,通常就是显卡的名字。
glGetString(GL_EXTENSIONS); 返回所支持的所有扩展,每两个扩展之间用空格隔开。
除了可以用OpenGL标准函数,还可以用OpenGL扩展包
厂商在发行OpenGL时,除了遵照OpenGL标准,提供标准所规定的各种功能外,往往还提供其它一些额外的功能,这就是扩展。
扩展可以提供各种很新很潮的效果哟~
每个OpenGL扩展,都必须向OpenGL的网站注册,确认后才能成为扩展。注册后的扩展有编号和名字。编号仅仅是一个序号,名字则与扩展所提供的功能相关。
名字用下划线分为三部分。举例来说,一个扩展的名字可能为:GL_NV_half_float,其意义如下:
第一部分为扩展的目标。比如GL表示这是一个OpenGL扩展。如果是WGL则表示这是一个针对Windows的OpenGL扩展,
如果是GLX则表示这是一个针对linux的X Window系统的OpenGL扩展。
第二部分为提供扩展的厂商。比如NV表示这是nVidia公司所提供的扩展。相应的还有ATI, IBM, SGI, APPLE, MESA等。
剩下的部分就表示扩展所提供的内容了。比如half_float,表示半精度的浮点数,每个浮点数的精度只有单精度浮点数的一半,
因此只需要两个字节就可以保存。这种扩展功能可以节省内存空间,也节省从内存到显卡的数据传输量,代价就是精确度有所降低。
EXT扩展是由多个厂商共同协商后形成的扩展
ARB扩展不仅是由多个厂商共同协商形成,还需要经过OpenGL体系结构审核委员会(即ARB)的确认
在使用OpenGL所提供的功能时,应该按照标准功能、ARB扩展、EXT扩展、其它扩展这样的优先顺序。
例如有ARB扩展支持这个功能时,就不使用EXT扩展。
扩展的函数、常量,在命名时与通常的OpenGL函数、常量有少许区别。那就是扩展的函数、常量将以厂商的名字作为后缀。
比如ARB扩展,所有ARB扩展的函数,函数名都以ARB结尾,常量名都以_ARB结尾。例如:
glGenBufferARB(函数)
GL_ARRAY_BUFFER_ARB(常量)
如何使用扩展:
搜索开源项目GLEE, 下载GLee.c/h文件,放到程序中一起编译
#include "GLee.h" // 注意顺序,GLee.h要在glut.h之前使用
#include <GL/glut.h>
if( GLEE_ARB_window_pos )
{
// 如果支持GL_ARB_window_pos, 则使用glWindowPos2iARB函数,指定绘制位置
printf("支持GL_ARB_window_pos/n");
printf("使用glWindowPos函数/n");
glWindowPos2iARB(100, 100);
}
看起来蛮简单的
OpenGL Extension Viewer软件,很好用,可以查看本机各种OpenGL信息
- OpenGL学习笔记:版本和扩展
- OpenGL版本和OpenGL扩展
- OpenGL版本和OpenGL扩展
- OpenGL入门学习——第十四课 OpenGL版本和OpenGL扩展
- OpenGL入门学习之十四——OpenGL版本和OpenGL扩展
- openGL另一个版本学习笔记
- OpenGL版本与扩展
- opengl学习笔记(一)---获取opengl版本等信息
- OpenGL版本与OpenGL扩展机制
- OpenGL版本与OpenGL扩展机制
- OpenGL版本与OpenGL扩展机制 (转载)
- OpenGL版本与OpenGL扩展机制
- 【转】OpenGL版本与OpenGL扩展机制
- OpenGL版本与OpenGL扩展机制
- OpenGL版本与OpenGL扩展机制 (转载)
- OpenGL版本与OpenGL扩展机制
- OpenGL版本与OpenGL扩展机制
- OpenGL版本与OpenGL扩展机制
- jquery lightTreeview 树形菜单研究心得
- MySQL connector C++在Linux下编译undefined reference to 'get_driver_instance'问题
- 计算机软件领域经典图书推荐
- Oracle 的 索 引 的 创 建 :索引的创建方法,使用场合及建议
- ubuntu 安装mesa
- OpenGL学习笔记:版本和扩展
- $("#***").serialize() 此 方法不能取得嵌套form中的子form 如果要序列化 则要取最外层得formid
- to_char 转化数字 指定小数点位数 用法
- CoS和DSCP
- The restrictions that are available to Internet Explorer 6.0 SP1
- 电脑总是弹出 实时调试
- 遍历数据库中所有表的空间使用情况
- Java 小例子:创建和使用固定大小的线程池
- 缩小Android模拟器的显示尺寸