opengl版本太低

http://forum.ubuntu.com.cn/viewtopic.php?f=42&t=163346&view=previous

上面的文章是Ubuntu论坛的一个贴子,讲述了opengl、mesa、和显卡驱动的关系,不过我还是没有看明白(晕啊)

【摘录】OpenGL是一套国际标准,所谓国际标准,就是写在纸面上的东西,而不是实际可用的东西。不过各大厂商会遵照这堆纸编写他们的驱动程序中的OpenGL功能。即OpenGL是标准,驱动+ICD+OpenGL.dll是实现
Mesa3D是开源的OpenGL实现。
Mesa3D的核心功能是软加速的,即所有的运算都由CPU来执行,写屏使用Xlib,不干显卡加速的事。DRI是Mesa3D的一个组件,负责硬加速,在这里被称作直接渲染(Direct Rendering)。由于Mesa3D的当前的复杂结构,软加速实现的功能不能替代直接渲染中没有实现的功能。也就是说Mesa3D的核心和DRI各渲染各的。所以出现了Mesa3D称已经实现了OpenGL2.1了,但是DRI驱动还在OpenGL1.3/1.4的缘故。
每次Mesa3D发布新版本的时候,都会有release note,其中一个重要部分就是Driver Status,里面详细提到了Mesa3D各个驱动当前的OpenGL支持状态,一下是目前最新的Mesa3D-7.2的情况。
Driver Status

Driver Status
---------------------- ----------------------
DRI drivers varies with the driver
XMesa/GLX (on Xlib) implements OpenGL 2.1
OSMesa (off-screen) implements OpenGL 2.1
Windows/Win32 implements OpenGL 2.1
Glide (3dfx Voodoo1/2) implements OpenGL 1.3
SVGA unsupported
Wind River UGL unsupported
DJGPP unsupported
GGI unsupported
BeOS unsupported
Allegro unsupported
D3D unsupported

其中DRI表示的是varies with the driver,所以DRI组件中对各个显卡的支持情况各有不同,intel的,到7.2,是支持到OpenGL1.4

/

如何在Windows下使用OpenGL 2.0的API(包括GLSL)

http://bbs.gameres.com/showthread.asp?threadid=109485

先简单的说我所知道的opengl在windows下的开发方式:

1、使用windows自带的opengl1.1+ glut(需要自己编译 )或者其他的glut增强版人freeglut、openglut

2、使用mesa

3、使用windows自带的opengl1.1+   glut + glew进行扩展

在windows下配置mesa实现的opengl有些注意事项:

首先,你要到www.mesa3d.org下载源程序包,一般要用到两个包mesaLib.zip和mesaGLUT.zip。值得一题的是,和许多开源项目一样,Mesa3D也只是提供了源代码,并没有提供直接可用的二进制文件,使用者需要重新编译源代码来的到可以使用的二进制文件。下载完成之后,把两个包放在同一个目录下面,直接选择“解压到当前目录...”来解压两个包,默认情况下,两个包被解压到了同一个文件夹下面(比如,Mesa-7.0.3)。然后,按照“/Mesa-7.0.3/windows/VC8”路径找到Visual Studio 2005的解决方案文件(mesa.sln)。打开它,发现这个解决方案中有好多工程(一般是4个,gdi、glu、mesa、osmesa),什么设置也不用修改(默认是Debug目标,而不是Release,千万不要修改),直接分别在右边的“解决方案资源管理器”中右键单击各个工程项,选择“生成”。等待所有的工程都生成成功之后你可以从“/Mesa-7.0.3/lib”这个路径下面得到3个DLL文件(opengl32.dll、glu32.dll、osmesa32.dll)和对应的库文件(*.lib)。同样在“/Mesa-7.0.3/windows/VC8/progs/glut”路径下面,你可找到GLUT的工程文件(glut.vcproj),依照同样的方法,生成GLUT工程。之后可以在“/Mesa-7.0.3/lib”这个路径下找到glut32.dll以及相应的库文件。

好了OpenGL 2.0的DLL和相应的库文件就全都得到了。编程的时候所需的所有头文件可以在“Mesa-7.0.3/include”这个路径下找到(或者你干脆就把这个目录设置成Visual Studio的include搜索目录)。

这里需要注意一点,由于编程时要对gl.h、glu.h等头文件进行#include进行引用,这些头文件会和Visual Studio中自带的gl.h、glu.h等头文件冲突,所以最好删除Visual Studio中的相应文件(建议对这些文件备份);同理,Visual Studio中的opengl32.lib文件也要删掉(建议备份)。

我自己添加的:

或者还有另外一种方法,在设置环境变量的时候,将mesa的include、lib、path添加到系统的include、lib、path的前面,参考我下面的

// mesa(opengl另外的一个实现).bat

@echo off

echo 设置Mesa(OpenGL的非官方实现)环境变量
echo 注意:
echo    -- 由于windows系统自带了1.1opengl的实现
echo    -- 在windows sdk的include目录下有gl.h和glu.h
echo    -- 以及system32目录下的opengl32.dll和glu32.dll
echo    -- 因此,需要将mesa的include、lib、path添加到系统path的前面,
echo    -- 否则的话,编译会出现错误

set MESA_DIR=D:/program/Mesa/Mesa-7.4.2

rem 已经将D:/program/Mesa/Mesa-7.4.2/bin加入到了用户的path环境变量中
rem windows搜索path路径时,先从用户path搜索,然后在搜索系统的path,
rem 因此,mesa的dll总是在windows的opengl32.dll和glu32.dll之前搜索到
rem set path=D:/program/Mesa/Mesa-7.4.2/bin;%path%

set include=%MESA_DIR%/include;%include%

rem 不包含debug版本,已经编译了debug版本,
rem 不过我看它的demo没有链接debug版本的lib和dll

set lib=%MESA_DIR%/lib;%lib%

根据上面引用的帖子的内容,很多人认为mesa在windows下比d3d慢,有几种说法:

1、在windows下的opengl开发就使用windows自带的1.1版本的opengl实现,如果要使用opengl2.0、2.1或者更高版本的opengl,则可以用扩展技术,但是这需要显卡驱动的支持,并且不能跨平台

2、使用glew。这个库对不同的opengl扩展进行了统一的封装

3、直接使用windows的d3d或者managed d3d(.net版本的d3d)

4、mesa在linux上更加适合,且性能不比d3d在windows上的性能差,也就是说mesa不适合于windows

(转)如何在Windows下使用OpenGL 2.0的API(包括GLSL)相关推荐

  1. Windows下学习Objective-C 2.0

    为什么要在windows下学习objective c 学习一门移动端的语言,为后面的工作做准备 穷,目前买不起Mac.只能在Windows下曲线学习. 如何在Windows下搭建Objective-c ...

  2. 如何在windows下安装cygwin

    如何在windows下安装cygwin 转载于:https://www.cnblogs.com/zhujiabin/p/5747580.html

  3. 如何在Windows下发布QT应用程序

    如何在Windows下发布QT应用程序 [环境介绍] [操作系统]:Windows 10 64bit [IDE套件]:QT Creator 4.8.0 [编译器版本]:QT5.12.0 MSVC201 ...

  4. 如何在Windows下强制git使用LF而不是CR + LF?

    本文翻译自:How do I force git to use LF instead of CR+LF under windows? I want to force git to checkout f ...

  5. 如何在 Windows 下创建 macOS 引导介质 (USB 启动盘)

    请访问原文链接:如何创建可引导的 macOS 安装介质,查看最新版.原创作品,转载请保留出处. 作者主页:www.sysin.org 完整版请参看:如何创建可引导的 macOS 安装介质 补充章节: ...

  6. 【实用】如何在windows下快速截图?

    如何在windows下快速截图? 快速截图是很多人的需求.截图的工具和方案也很多,但是,这里给出一个通用的,被大众认为最高效的一个解决方案. 我们都知道键盘上有一个"prt sc" ...

  7. 如何在Windows下利用Apche查看MySQL数据库?

    本篇文章主要跟大家介绍的是如何在Windows下利用Apche查看MySQL数据库,小杜觉得挺实在的,就整理了一下并分享给大家做个参考,希望大家看完之后有一定的收获.因此,有感兴趣的朋友记得要看完! ...

  8. 如何在windows下安装CentOS7.7

    如何在windows下安装CentOS7.7 一.下载Oracle VM VirtualBox和CentOS7.7 1.先从官网上下载和自己Windows系统对应的版本 最新的版本是 6.0 下载地址 ...

  9. wxpython 如何在windows下同时显示unicode中日韩文

    周海汉 /文 2010.1.6 python版本,python 2.6+,wxpython 2.8+ 问题提出 遇到wxpython 如何在windows下同时显示中文日文韩文越南拼音的问题. win ...

  10. Windows 下的 OpenGL 开发环境配置(GLFW+GLAD)

    引言 最近在读 Unity 4.3 的源码,研究到 Unity 集成的物理引擎 PhysX 和 Box2D 部分,接下来还要研究渲染引擎方面的东西,想着直接倒腾一下,自己集成一遍写个小 demo .当 ...

最新文章

  1. 用LIBSVM做回归和预测
  2. 申请Let's Encrypt的证书
  3. 数据结构(8)----栈与队列之循环队列
  4. 农村电商,如何做到年入100万?
  5. LeetCode Interview Qustions: Add Two Number
  6. Java中,成员内部类的常见修饰符及应用 成员内部类不是静态的,访问的格式...
  7. android拦截黑名单电话和短信
  8. 【网络编程】Socket网络编程基础
  9. PSP-DDR跳舞机模拟器制谱教程
  10. 错误 LNK2005 xxx已经在 xxx.obj 中定义
  11. BGP 自动路由聚合
  12. 前端实现antd文本域限制字数
  13. PMP 成本计算相关
  14. 找规律万能公式_求各种数学万能公式求一些万能公式,帮助各个喜欢数学的同学,求解方程、列方程、求根、列规律式等等,最好有较详细的用法和解释....
  15. 前端微信公众号开发,成功拿到了字节跳动、腾讯大厂offer
  16. 21.通用型1602液晶显示屏操作方法
  17. SCD-缓慢变化维-拉链表
  18. 第五章运算符表达式和语句
  19. 你对本岗位的认识PHP,本岗位工作认识
  20. python小数乘法计算_小数乘法100道

热门文章

  1. C++ 数据结构,vector与栈介绍
  2. mysql 使用注意
  3. Dynamics CRM2013 6.1.1.1143版本号插件注冊器的一个bug
  4. pyhon基础(一)
  5. !DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtm...
  6. asp.net 从客户端中检测到有潜在危险的Request.Form值
  7. linux下apache2两种工作模式及两者切换
  8. Cisco路由重分发配置(引入路由)
  9. html里面怎么引入swiper,JavaScript库——使用swiper.js创建嵌套的swiper
  10. php bc gmp,php中ipv6转纯数字和反转