位置: 编程技术 - 正文

opengl extension

编辑:rootadmin
如果你在Windows平台下开发OpenGL程序,那么系统中自带的OpenGL库就是1.1的,如果想使用1.2或者更高版本的OpenGL库,那么只能使用OpenGL扩展,在网上关于如何使用OpenGL扩展的文章很多,但是多数都是简单带过,抄来抄去,很少有实际的代码,我当时也遇到过同样的问题,几经周折终于找到了解决办法,不敢独享,拿出来与大家分享,如果有什么不当之处,一定告诉我,感激不尽!

推荐整理分享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)

{

opengl  extension

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 转载请保留说明!

上一篇:学习OpenGL-ES: 2 - EGL解析(学习英语)

下一篇:OpenGL简单绘制游戏角色阴影(opengl画简单图形)

  • 减免所得税额是怎么算出来的12行
  • 汽车申请报废了交强险能退吗
  • 福利费专票进项可以抵扣吗
  • 做账时计提费用不含税怎么取整
  • 加计抵扣进项税进营业外收入
  • 外购已税什么意思
  • 增值税零税率发票预缴税额
  • 一般纳税人可以转小规模吗
  • 运费开进发票
  • 建筑业发票可以在备注里加备注么
  • 一般纳税人进项发票认证操作流程
  • 微信公众订阅号怎么注册
  • 企业为什么要签订集体合同
  • 费用与支出的区别是什么
  • 税前合同价包含附加税金吗?
  • 什么企业需要纳税申报
  • 分公司年报怎么查
  • 在Win7中,鼠标非最大化
  • 产品入库的业务流程
  • 以公允价值计量的投资性房地产
  • 合伙企业需要交哪些税
  • win7提示windows进行了未授权的更改
  • 服务器数据迁移到新的服务器
  • 特殊工种人身安全保险费可以扣除吗
  • 第一启动盘设置为u盘
  • macOS Big Sur 11.1 开发者预览版 Beta 2推送更新
  • 企业向银行申请办理非原路的服务贸易退汇,银行应当
  • 退回多缴所得税做贷方本期发生额没有
  • autorun.exe无法运行
  • 生产企业出口退税的计算方法
  • 路由器wds桥接成功为什么不能上网
  • php最好的教程
  • 收到借款金额
  • 三维目标通用模板
  • PHP:jdtojewish()的用法_日历函数
  • 国家最高科技奖2018
  • 股票印花税和佣金的关系
  • 购买材料支出明细表
  • php生成微信二维码
  • 超过500万需要补税吗
  • 微信php源码
  • ppp中启用chap命令
  • 待抵扣进项税额和进项税额的区别
  • 商标属于无形资产怎么入账
  • windows PostgreSQL 9.1 安装详细步骤
  • CentOS 6.5 x64系统中安装MongoDB 2.6.0二进制发行版教程
  • 专票没有抵扣联可以作废吗
  • 固定资产入账原值含税价吗
  • 无形资产摊销一经确认不得转回
  • 固定资产改造的配件怎么入账
  • 资质平移股权账务怎么办
  • 设计规划费入什么科目
  • 餐饮企业原材料采购描述错误的是
  • 库存商品暂估入库是什么意思
  • 个人如何进行股票交易
  • 营业收入和主营业务收入分别在哪看
  • Win10预览版桌面图标和任务栏不翼而飞怎么办?
  • 安装fedora33
  • win7如何升级win11系统
  • linux下时间同步的两种方法分享
  • yosemite 10.10.3 beta4 下载地址 os x10.10.3beta4官方下载
  • linux纯文本浏览器
  • win10系统如何关闭
  • mysqld是什么进程
  • jquery设置滚动条
  • easyui 日期格式化
  • code::blocks怎么用
  • nodejs connect
  • python的入门教程
  • js解析文本文件
  • node.js怎么用
  • JavaScript控制台输出
  • android网络开发技术答案形考任务五
  • unity中assets文件夹的作用
  • document.write与writeln的输出内容区别说明
  • 国家税务局上海电子税务局app
  • 贷款利息收入增值税税率2023
  • 财产转让所得适用税率
  • 福建省纪检委网站
  • 二手车中介公司怎么做账报税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设