zoukankan      html  css  js  c++  java
  • GLFW扩展库

        一般OpenGL被认为是一个应用程序编程接口(Application Programming Interface, API),它包含了一系列可以操作图形、图像的方法。然而,OpenGL本身并不是一个API,仅仅是一个规范,由Khronos组织制定并维护。

        OpenGL严格规定了每个函数该如何执行,以及它们该如何返回。至于内部具体每个函数是如何实现的,将由OpenGL库的开发者自行决定。因为OpenGL规范并没有规定实现的细节,具体的OpenGL库允许使用不同的实现,只要其功能和结果与规范相匹配。

        早期的OpenGL使用立即渲染模式(也就是固定渲染管线),这个模式下绘制图形 很方便。OpenGL的大多数功能都被库隐藏起来,开发者很少能控制OpenGL如何进行计算。而开发者希望更多的灵活性。随着时间推移,规范越来越灵 活,开发者也能更多的控制绘图细节。立即渲染模式确实容易使用和理解,但是效率太低。因此从OpenGL3.2开始,规范书开始废弃立即渲染模式,推出核 心模式,这个模式完全移除了旧的特性。

        在我们画出出色的效果之前,首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而,这些操作在每个系统上都是不一样 的,OpenGL有目的的抽象(Abstract)这些操作。这意味着我们不得不自己处理创建窗口,定义OpenGL上下文以及处理用户输入。幸运的是,有一些库已经提供了我们所需的功能,其中一部分是特别针对OpenGL的。这些库节省了我们书写平台相关代码的时间,提供给我们一个窗口和上下文用来渲染。最流行的几个库有GLUT,SDL,SFML和GLFW。

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

        GLFW可以从它们网站的下载页上获取。GLFW已经有针对Visual Studio 2012/2013的预编译的二进制版本和相应的头文件,但是为了完整性我们将从编译源代码开始,所以需要下载32位的源代码包

        从源代码编译库可以保证生成的目标代码是针对你的操作系统和CPU的,而一个预编译的二进制代码并不保证总是适合。提供源代码的一个问题是不是每个人都用 相同的IDE来编译,因而提供的工程文件可能和一些人的IDE不兼容。所以人们只能从.cpp和.h文件来自己建立工程,这是一项笨重的工作。因此诞生了 一个叫做CMake的工具。

        CMake是一个工程文件生成工具,可以使用预定义好的CMake脚本,根据用户的选择生成不同IDE的工程文件。这允许我们从GLFW源码里创建一个Visual Studio 2012工程文件。首先,我们需要从这里下载安装CMake。我们选择Win32安装程序。

        一旦CMake安装成功,你可以选择从命令行或者GUI启动CMake,为了简易我们选择后者。CMake需要一个源代码目录和一个存放编译结果的目标文件目录。源代码目录我们选择GLFW的源代码的根目录,然后我们新建一个_build_文件夹来作为目标目录。

        之后,点击Configure(设置)按钮,我们选择生成的目标平台为Visual Studio 11(因为Visual Studio 2012的内部版本号是11.0)。CMake会显示可选的编译选项,这里我们使用默认设置,再次点击Configure(设置)按钮,保存这些设置。保存之后,我们可以点击Generate(生成)按钮,生成的工程文件就会出现在你的build文件夹中。

        在build文件夹里可以找到GLFW.sln文件,用Visual Studio 2012打开。因为CMake已经配置好了项目所以我们直接点击Build Solution(构建解决方案)然后编译的结果glfw3.lib就会出现在src/Debug文件夹内。(注意我们现在使用的glfw的版本号为3.1)

        生成库之后,我们需要让IDE知道库和头文件的位置。有两种方法:

    1. 找到IDE或者编译器的/lib/include文件夹,之后添加GLFW的include目录到/include里去,相似的将glfw3.lib添加到/lib里去。这不是推荐的方式,因为很难去追踪library/include文件夹,而且重新安装IDE/Compiler可能会导致这些文件丢失。
    2. 推荐的方式是建立一个新的目录包含所有的第三方库文件和头文件,并且在你的IDE/Compiler中指定这些文件夹。我个人使用一个单独的文件夹包含LibsInclude文件夹,在这里存放OpenGL工程用到的所有第三方库和头文件。这样我的所有第三方库都在同一个路径(并且应该在你的多台电脑间共享),然而要求是每次新建一个工程我们都需要告诉IDE/编译器在哪能找到这些文件

        对于第一种方法,具体的位置可以参考这篇文章

    完成上面步骤后,我们就可以使用GLFW创建我们的第一个OpenGL工程了!

  • 相关阅读:
    (Toolbar)Android中如何消除Toolbar左边的空白
    (TextView)Android中为TextView赋初始值
    (Edittext)Android中界面中有多个Edittext,如何默认让第二个获取焦点
    (警告)Android中报Custom view `×××` has setOnTouchListener called on it but does not override performClick警告
    (Toolbar)Android中app:showASAction的值及含义
    个人课程总结
    (list)关于list清空问题的解决
    Ubuntu hive 安装过程中遇到的一些问题
    学习进度——第十七周
    个人课程总结
  • 原文地址:https://www.cnblogs.com/clairvoyant/p/5574758.html
Copyright © 2011-2022 走看看