OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南

提示:半自制方法,跟拍需谨慎

怨念:

1、网上资料非常少,而且上来就就一堆操作糊你脸上,根本不给你介绍各个库的相互关系。
2、本身OpenGL非向下兼容的设计就很反人类,这要升级库分分钟死一堆项目。(初学者perspective)
3、网上教学资料新库旧库混杂,有些教学代码用新库,有些用旧库。

博客目标:能用codeblock运行这三个tutorial程序

Hello World(glut)

#include
#include
#include
#include
using namespace std;
int main()
{
    cout<<"Hello World"<<endl;
    return 0;
}

Using GFLW with blank screen ouput(glew+glfw3)

#define GLEW_STATIC
#define GLEW_BUILD
#include
#include
#include

int main()
{

    glfwInit();
	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
	glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
	glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
    GLFWwindow* window = glfwCreateWindow(800,600,"OpenGL",nullptr,nullptr);

    if(!window)
    {
        glfwTerminate();
        return 0;
    }

    glewExperimental = GL_TRUE;glewInit();

    while(!glfwWindowShouldClose(window))
    {
        glClearColor(0.0f,0.0f,0.0f,1.0f);
        glClear(GL_COLOR_BUFFER_BIT);
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    glfwTerminate();return 0;
}

The first triangle(glut+glew)

#include
#include
#include
using namespace std;
void initGL(){
    glClearColor(0.0f,0.0f,0.0f,1.0f);
}
void display(){
    glClear(GL_COLOR_BUFFER_BIT);

    glBegin(GL_TRIANGLES);

    glColor3f(0.0f,0.0f,1.0f);
    glVertex2f(0.1f,-0.6f);
    glVertex2f(0.7f,-0.6f);
    glVertex2f(0.4f,-0.1f);
    glEnd();

    glFlush();
}

int main(int argc,char **argv)
{
    glutInit(&argc,argv);
    glutCreateWindow("Vertex, Primitive & Color");

    glutInitWindowSize(320,320);

    glutInitWindowPosition(50,50);

    glutDisplayFunc(display);

    initGL();
    glutMainLoop();

    return 0;
}

前序知识1(OpenGL头文件含义):

  1. :OpenGL所使用的函数和常量声明。
  2. :GLU(OpenGL实用库)所使用的函数和常量声明。GLU库属于OpenGL标准的一部分。(以下各种库则不属于)
  3. :GLAUX(OpenGL辅助库)所使用的函数和常量声明。这个库提供了创建窗口,处理键盘和鼠标事件,设置调色板等OpenGL本身不提供,但在编写OpenGL程序时又经常用到的功能。目前这个库已经过时,只有比较少的编译环境中有提供,例如VC系列。在VC系列编译器中,使用这个头文件之前必须使用#include 或者具有类似功能的头文件。
  4. :GLUT(OpenGL实用工具包)所使用的函数和常量声明。这个库的功能大致与GLAUX类似,目前许多OpenGL教程使用这个库来编写演示程序。一些编译系统可能不直接提供这个库(例如VC系列),需要单独下载安装。这个头文件自动包含了,编程时不必再次包含它们。
  5. 由于GLUT和freeglut的版本太旧且不稳定(bug又多),所以开发了glfw3来替代glut的功能。
  6. GLEW扩展库,跨平台,整合OpenGL的函数接口,自动识别你的平台所支持的全部OpenGL高级扩展函数。只要包含一个glew.h头文件,你就能使用gl,glu,glext,wgl,glx的全部函数。

参考资料:https://www.cnblogs.com/gujianhan/p/3702050.html

前序知识2(.h .lib .dll的含义及关系)

  1. .h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。
  2. .他们的英文分别是 header, (static) library, Dynamic Link Library。
  3. .h 声明函数接口,.lib告诉链接器调用的函数在哪个dll中,.dll是函数可执行代码

开始搭建

1. 下载OpenGL全家桶

xmueducn-my.sharepoint.com/:u:/g/personal/dmt1709533_xmu_edu_my/EWXWNLSPm1ZPm63cZsOZGnYB1x3HTeK-JnMqW8QlqBY8ZQ?e=EjAbUv
OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第1张图片

  1. Onedrive网盘,左上角下载,按不动多按几次。
  2. 各版本号如上图所示,64位亲测不行。
  3. 原则上我们只需要glew和glut

2. 搭建glut+glew编译器环境

2.1 GLUT

※找到你的codeblock目录,如果你的codeblock不是安装在默认位置,请自行寻找根目录及所对应的文件夹

  1. 把 GLUT 包中的 glut.dll、glut32.dll 复制到 C:\Windows\SysWOW64 目录;
  2. 把 glut.h 复制到 C:\Program Files (x86)\CodeBlocks\MinGW\include\GL;
  3. 把glut.lib、glut32.lib 复制到 C:\Program Files (x86)\CodeBlocks\MinGW\lib;

2.2 GLEW

  1. 把GLEW包中的glew32.dll 复制到C:\Windows\SysWOW64 目录;
  2. 把glew.h复制到 C:\Program Files (x86)\CodeBlocks\MinGW\include\GL;
  3. 把 glew32.lib、glew32s.lib 复制到 C:\Program Files (x86)\CodeBlocks\MinGW\lib。

复制好后各大文件夹应该如图所示

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第2张图片
OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第3张图片
OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第4张图片

2.3 创建并运行project

2.3.1 选择project

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第5张图片

2.3.2 创建GLUT

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第6张图片

2.3.3 选择目录并一路next

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第7张图片

2.3.4 选择你codeblock所在的根目录里的MinGW文件夹

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第8张图片

  1. 如果这一步出错请仔细检查前面是否有疏漏
2.3.5一路next创建完成,画面中出现如下代码,在首段插入#include后点击运行

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第9张图片

2.3.6 GLEW+GLUT环境就搭建完成了

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第10张图片

目前为止:
  1. 我们可以引入gl.h,glew.h,glut.h了
  2. ※但是注意,他们都是在GL文件夹下面,所以我们引入的时候,一定是写成**#include**
  3. 我们现在可以愉快地自己敲敲上面的HelloWorld和The first triangle了,但是第二个程序的环境仍然没有搭建好。

补2.3.7:搭建了一个环境,事实上我们是需要声明一个编译器和其他编译器区别开来的。

所以可以按照下面的步骤,进行编译器选项的添加
OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第11张图片

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第12张图片
自己重命名,一个新的编译器就生成了,以后要创建GLEW+GLUT文件,创建项目的时候,就使用这个编译器。
OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第13张图片

参考文献:CodeBlocks + OpenGL + GLUT +Freeglut + GLEW 开发环境搭建
作者:Lyman Yuan

3. GLEW+GLFW3环境搭建

这个一个环境搭建才是真正的复杂,我已经是简化了很多步骤,但是仍然比较麻烦,小伙伴们坐好扶稳了。
头铁的朋友们可以参考这两篇贴吧,从源文件编译开始搭建:
https://tieba.baidu.com/p/4493663232?red_tag=1779863617
https://tieba.baidu.com/p/4496683425?red_tag=1770827451

3.1 下载MinGW库和“引用”文件库

MinGW:https://sourceforge.net/projects/mingw-w64/
引用:https://xmueducn-my.sharepoint.com/:u:/g/personal/dmt1709533_xmu_edu_my/EZQdyYt8PphHttX77fKZ8GsBdAUKXNEbEYGc8XxDe9Voyw?e=vcgC6L

3.2 装MinGW

3.2.1 选择如图所示的架构

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第14张图片

3.2.1 选择合适的位置(不能带有空格和中文字符)

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第15张图片

3.2.3 安装完成

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第16张图片

3.2.4 配置环境变量 “开始-环境变量-环境变量-path”,注意添加分号(可选)

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第17张图片
OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第18张图片

上面下载的“引用”则解压到你打算存放OpenGL项目的文件夹

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第19张图片

3.3 新建一个普通的控制台项目,再次进入compiler界面,进入search directories,按照如下添加

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第20张图片

  1. 注意,不是新建GLFW的项目,而是一个普通的console application。

3.4 进入linker setting 按照如下添加.a文件,顺序需和我保持一致

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第21张图片

3.5 进入Toolchain executable,按照根据自己的根目录,按照下表添加

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第22张图片

3.6 然后按copy,选择“是”后重命名一下,生成新我们的编译器,然后OK退出

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第23张图片

3.7 重启codeblock,创建一个控制台项目,并选择GLEW GLFW编译器(以后每次创建项目都要选择合适的编译器)

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第24张图片

3.8 创建结束后到项目文件根目录,把“引用”的glew32dll.dll和glfw3.dll复制到文件根目录

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第25张图片

3.9 打上代码 编译运行 大功告成

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第26张图片

可能需要的步骤

1 如果出现类似字符问题,可以尝试把编码改换成UTF-8编码。settings->editor

OpenGL codeblock17.12 (glew+glut, glew+glfw3)环境搭建全指南_第27张图片

4. 总结

  1. 搭建环境需要了解对应项目的一些版本知识。
  2. 清楚这些链路库的关系对于搭建环境帮助很大。
  3. 以后启动项目需要记得上面的某些操作。

你可能感兴趣的:(OpenGL)