zoukankan      html  css  js  c++  java
  • OpenGL环境搭建

    GLFW

      GLFW是一个OpenGL的C语言库,它提供了渲染物体所需要的最低限度的接口,它允许用户创建OpenGL上下文,定义窗口参数以及用户的输入。

    构建GLFW

      GLFW可以从它的官方网站下载,目前官网上有Visual Studio2015及之前版本的预编译二进制版本和相应的头文件,我这里是下载了源代码自己进行编译的。(推荐下载32版本,64版本可能会出现很多问题)

      自己编译可以保证生成的库是兼容你的操作系统以及CPU的,如果直接下载预编译的二进制文件会出现各种兼容性的问题。

    CMake

      CMake是一个工程文件生成工具。用户可以使用预定义好的CMake脚本,根据自己的选择(像是Visual Studio, Code::Blocks, Eclipse)生成不同IDE的工程文件。这允许我们从GLFW源码里创建一个Visual Studio 2017工程文件,之后进行编译。首先,我们需要从这里下载安装CMake。我选择的是Win32安装程序。 

      当我们的CMake安装完成后,可以从命令行或者GUI进入程序,我这里选择GUI。CMake需要一个源代码目录和一个存放编译结果的目标文件目录,源代码目录是我们选择GLFW的源代码根目录,编译目录我们可以自己新建。  

      在设置完代码目录和目标根目录后,点击Configure(设置)按钮,然后让CMake读取设置和源代码,由于我使用的是Visual Studio 2017 ,最终我选择VS2017,CMake会显示可选编译选项用来配置最终生成的库。这里使用默认设置,并在此点击

    Configure(设置)按钮保存设置。最后点击Generate(生成按钮),生成文件夹会在你设置的Bulid目录下面。

    编译

      在Build文件夹里面选择GLFW.sln文件,用VS2017打开,然后自己手动编译一下。

      编译完成后,我们需要让IDE知道库和头文件的位置

      这里我创建了两个文件夹分别是:lib文件夹include文件夹。将源代码下的include/GLFW文件夹放到新建的include文件夹下,编译出来的glfw3.lib放在新建的lib文件夹下。

             

    创建工程

      打开,VS2017,创建一个新的C++项目,之后就开始创建第一个OpenGL程序吧!

    链接

      为了让程序使用GLFW,我们需要把GLFW库链接进工程中,这可以通过链接器设置里指定我们要使用glfw3.lib来完成,但是由于我们将第三方库放在另外一个目录中,我们的工程还不知道在哪里寻找这个文件 。于是我们需要将我们放第三方库的目录添加设置。

      要添加这些目录,我们首先进入工程属性,在解决方案窗口里右键项目,然后选择VC++ 目录(如下图)。

     

    现在VS可以找到所需的所有文件了,最后需要在链接器选项卡里的输入选项卡里添加glfw3.lib这个文件:

    要链接一个库我们必须告诉链接器它的文件名,库名字是glfw.lib。我们把它加到附加依赖项中。这样GLFW在编译的时候就会被链接进来了。

    Windows上的OpenGL库

      opengl32.lib已经包含在Microsoft SDK 里,它在Visual Studio 安装的时候已经默认安装了,由于我们这里用的是VS编辑器,并且是在Windows操作系统上,我们只需要将opengl32.lib添加进链接器设置里就OK了。

    GLAD

      到这里还没有结束,因为OpenGL只是一个标准/规范,具体的实现是由驱动开发商针对特定显卡实现的。由于OpenGL驱动版本很多,所以大多数函数的位置都没有办法保证在编译的时候确定下来,需要在运行查询。

    开发者需要在运行时获取函数地址并将其保存在一个函数指针中,方便以后使用。在Windows中是这样的:

     

    1 // 定义函数原型
    2 typedef void (*GL_GENBUFFERS) (GLsizei, GLuint*);
    3 // 找到正确的函数并赋值给函数指针
    4 GL_GENBUFFERS glGenBuffers  = (GL_GENBUFFERS)wglGetProcAddress("glGenBuffers");
    5 // 现在函数可以被正常调用了
    6 GLuint buffer;
    7 glGenBuffers(1, &buffer);

    我们可以看到代码是比较复杂的,如果用的函数多了,复杂度就更多了。幸运的是,有些库能简化这个过程,其中GLAD是目前为止最新的,也是最流行的库。

     OpenGL版本查看

      工具地址:链接: https://pan.baidu.com/s/1i5koKBz 密码: urga

      我们可以通过这个软件来查看自己电脑的OpenGL版本。

    配置GLAD

      GLAD是一个开源库,他能解决我们上面提到的这个复杂问题。GLAD的配置与大多数开源库有些不同,GLAD使用了一个在线服务。将语言设置为C/C++。在API选项中,选择3.3以上的OpenGL(gl)版本,之后将模式(Profile)设置为Core,并且保证生成加载器(Generate a loader)的选项是选中的。现在可以先(暂时)忽略拓展(Extensions)中的内容。都选择完之后,点击生成(Generate)按钮来生成库文件。

       GLAD提供给一个Zip压缩文件,包含两个头文件目录,和一个glad.c文件。将两个头文件目录复制到我们刚才新建的include目录中,并且把glad.c文件添加到工程中。

      然后就可以将一下指令加入到头文件顶部了:

    #include <glad/glad.h> 
    

      最后点击编译,应该就不会出现任何错误了。现在我们OpenGL初步的环境已经搭建完成了。

     

     附加链接

     

     

     

                                     

     

     

  • 相关阅读:
    web设计师和前端设计师的互动—前端工程师应该具备的三种思维
    PyQt入门系列(一):Hello World
    PIL在windwos系统下Image.show无法显示图片问题的解决方法
    大赛学习笔记
    ArcGIS Add-in开发(一)--获取选定要素的属性值
    【转】WPF颜色相关操作
    斗地主小代码
    MAVEN配置私服仓库
    Error creating bean with name 'transactionManager' defined in ServletContext resource XXX
    org.hibernate.HibernateException: getFlushMode is not valid without active transaction
  • 原文地址:https://www.cnblogs.com/huangzhenxiong/p/7484935.html
Copyright © 2011-2022 走看看