0评论

OpenGL教程学习及32/64位开发环境配置

清风 2019-03-12 37浏览

想免费获取内部独家PPT资料库?观看行业大牛直播?点击加入腾讯游戏学院游戏开发行业精英群711501594

本篇文章主要给大家讲解下OpenGL的编程,让大家掌握这项技术。

1、OpenGL是什么

OpenGL是近几年发展起来的一个性能卓越的三维图形标准,它是在SGI等多家世界闻名的计算机公司的倡导下,以SGI的GL三维图形库为基础制定的一个通用共享的开放式三维图形标准。目前,包括Microsoft、SGI、IBM、DEC、SUN、HP等大公司都采用了OpenGL做为三维图形标准,许多软件厂商也纷纷以OpenGL为基础开发出自己的产品,其中比较着名的产品包括动画制作软件Soft Image和3D Studio MAX、仿真软件Open Inventor、VR软件World Tool Kit、CAM软件ProEngineer、GIS软ARC/INFO等等。值得一提的是,随着Microsoft公司在Windows NT和最新的Windows 95中提供了OpenGL标准及OpenGL三维图形加速卡的推出,OpenGL将在微机中有广泛地应用,同时也为广大用户提供了在微机上使用以前只能在高性能图形工作站上运行的各种软件的机会。

OpenGL实际上是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;OpenGL可以与Visual C++紧密接口,便于实现机械手的有关计算和图形算法,可保证算法的正确性和可靠性;OpenGL使用简便,效率高。它具有七大功能:

1) 建模 OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面(如Bezier、Nurbs等曲线或曲面)绘制函数。

2) 变换 OpenGL图形库的变换包括基本变换和投影变换。基本变换有平移、旋转、变比镜像四种变换,投影变换有平行投影(又称正射投影)和透视投影两种变换。其变换方法与机器人运动学中的坐标变换方法完全一致,有利于减少算法的运行时间,提高三维图形的显示速度。

3) 颜色模式设置 OpenGL颜色模式有两种,即RGBA模式和颜色索引(Color Index)。

4) 光照和材质设置 OpenGL光有辐射光(Emitted Light)、环境光(Ambient Light)、漫反射光(Diffuse Light)和镜面光(Specular Light)。材质是用光反射率来表示。场景(Scene)中物体最终反映到人眼的颜色是光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色。

5) 纹理映射(Texture Mapping) 利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。

6) 位图显示和图象增强 图象功能除了基本的拷贝和像素读写外,还提供融合(Blending)、反走样(Antialiasing)和雾(fog)的特殊图象效果处理。以上三条可是被仿真物更具真实感,增强图形显示的效果。

7) 双缓存(Double Buffering)动画 双缓存即前台缓存和后台缓存,简而言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。

此外,利用OpenGL还能实现深度暗示(Depth Cue)、运动模糊(Motion Blur)等特殊效果。从而实现了消隐算法。

OpenGL 32位安装配置教程

1、准备条件

操作系统:Windows 10
编译器:Visual Studio 2017(VC++ 2017)
CMake 工具
GLFW库
GLAD库

2、配置步骤

Step1. 下载并编译GLFW库

首先访问GLFW官网下载页,下载源代码并解压,如下图所示

接下来打开CMake程序,设置source code为GLFW解压目录,build目录为GLFW解压目录下新建的build文件夹:

点击configure,默认即可:

再次点击configure按钮:

最后点击Generate:

可以在build目录下生成Visual Studio的解决方案:

打开解决方案,直接编译即可:


在build\src\Debug\目录下得到编译后的库文件:

Step2. 下载GLAD库

转到GLAD在线服务页面,修改语言为C/C++,选择OpenGL,API选择使用的对应OpenGL版本,Profile选择Core,勾上Generate a loader,点击GENERATE:


下载压缩包:

如何查看OpenGL版本

下载使用OpenGL Extension Viewer,即可查看OpenGL版本:

相关链接:
OpenGL Extension Viewer在Softonic的下载页:https://opengl-extensions-viewer.en.softonic.com/

Step3. 配置Visual Studio工程

将GLFW源码中的include\文件下的内容、GLFW编译后的库、下载的GLAD库,放入opengl文件夹,组织如下:

新建Visual C++空项目,将opengl文件夹放入工程目录:

配置VS工程如下:



添加opengl\src\glad.c源文件:

Step4. 编写代码并测试

代码如下:
#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream>
using namespace std;
void framebuffer_size_callback(GLFWwindow* window, int width, int height);
int main() {
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    GLFWwindow *window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
    if (window == NULL) {
        cout << "Failed to create GLFW window" << endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);
    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
        std::cout << "Failed to initialize GLAD" << std::endl;
        return -1;
    }
    glViewport(0, 0, 800, 600);
    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
    while (!glfwWindowShouldClose(window)) {
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    glfwTerminate();
    return 0;
}
void framebuffer_size_callback(GLFWwindow* window, int width, int height) {
    glViewport(0, 0, width, height);
}

编译运行,结果如下:

这样32位的安装配置就完成了。

OpenGL 64位安装配置教程

准备工作

1.Visual Studio 2015:建议选用Community版本

2.FreeGLUT源代码:很遗憾,没有提供给我们已经编译好的版本,所以我们需要用自己编译源码。现在比较稳定的是FreeGLUT3.0版本,可以在这里下载。

3.CMake:编译源码的工具。我用的时候已经是3.8版本了,建议从官网下载

1.下载CMake并编译FreeGLUT

从CMake官网,点进去找到Download,如图:

点击Download Lateset Release,进入网页

注意要选择自己所在平台,如果装过CMake且版本过低的话可以删除旧的版本。
用Windows平台我建议选择后缀为。msi的下载,安装比较方便。

装好后打开CMake如下:

where is the source code选择解压FreeGLUT后的目录。

例如我的是D:\OpenGL\freeglut\freeglut-code-1792-tags-FG_3_0_0,注意不要选择为D:\OpenGL\freeglut\freeglut-code-1792-tags-FG_3_0_0\src

where to build the binaries是即将生成的文件存放的路径,建议单独建一个文件夹存放。

选择完毕后显示如下:

Configure如下配置

点击FInish等待配置完成
回到主界面后点击Genreate:

选项默认的就可以,此时可以去到你设定的文件夹,找到:

freeglut.sln,默认使用VS2015打开。

此时分别选择Debug和Release模式生成解决方案。
(注意选择x64)

2.配置FreeGLUT

这里以我的机器为例,记录配置FreeGLUT的过程。
  • 将 D:\OpenGL\freeglut\freeglut-code-1792-tags-FG_3_0_0\include目录下的GL文件夹copy到VS2015的安装目录下的VC文件的include目录,例如我的是D:\visual studio 2015\VC\include
  • 打开CMake生成目标文件夹的bin\Release\freeglut.dll和bin\Debug\freeglutd.dll移动到拷贝至C:\Windows\system32与?C:\Windows\SysWOW64根目录下。
  • 打开CMake生成目标文件夹lib\Release\freeglut.lib、freeglut_static.lib和lib\Debug\freeglutd.lib、freeglut_staticd.lib并移动到D:\visual.studio2015\VC\lib\amd64目录下。

3.测试

建立空C++项目后,测试简单的Demo
#include <GL\freeglut.h>
void myDisplay(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
    glFlush();
}
int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(400, 400);
    glutCreateWindow("第一个OpenGL程序");
    glutDisplayFunc(&myDisplay);
    glutMainLoop();
    return 0;
}

效果如下