OpenGL3环境搭建

目前网上几乎所有的OpenGL环境的搭建都是基于OpenGL2的,涉及到新版OpenGL3的几乎没有。所以我就凭感觉自己瞎搞了一下,最后竟然可以用了~嗨森~
所以呢,就写一遍文章分享一下经验,也顺便记录一下,备忘~

我的电脑使用的是VS2015,所以就以VS2015为例,别的IDE应该也差不多。

创建自己的include和lib目录

创建自己的include和lib目录,之后会用到。
我的目录如下:
OpenGL3环境搭建_第1张图片

GLFW

  • 功能:GLFW用于创建OpenGL的窗口环境
  • 下载:http://www.glfw.org/
  • 生成解决方案要使用CMake,所以请下载并安装CMake(https://cmake.org/download/)
    打开CMake,source code选中GLFW根目录,build binaries随便选一个空文件夹就好了,最终编译过的文件会在这个文件夹中。configure选择vs的编译器,点击generate。
  • 编译:打开GLFW的生成目录,打开GLFW.sln, 生成解决方案。然后在src/debug目录下可以看到一个glfw3.lib,将这个文件复制到之前创建的lib目录下。
  • 将GLFW源文件的include下的GLFW目录复制到之前创建的include文件夹下。

GLEW

  • 下载:http://glew.sourceforge.net/
  • 编译:GLEW因为解决方案已经生成好了,所以不需要使用CMake生成解决方案。在build/vc2012下我们可以看到glew.sln,同样用vs2015打开。解决方案配置选择release 32位,然后在解决方案资源管理器中选择glew_static,重新生成。
  • 然后可以在lib/Release/Win32目录中可以找到glew32s.lib(s表示static),将这个文件复制到之前创建的lib文件夹中。
  • 同样,将GLEW目录下的include中的文件夹复制到之前创建的include文件夹下。

vs2015项目设置

  • 用vs创建一个空的vc++项目。
  • 点击项目-属性,在vc++目录中,在包含目录中加入我们之前创建的include文件夹,在库目录中加入我们之前创建的lib文件夹
    OpenGL3环境搭建_第2张图片
  • 在链接器的输入的附加依赖项中,加入opengl32.lib, glfw3.lib, glew32s.lib三个静态链接库文件
    OpenGL3环境搭建_第3张图片

第一个OpenGL程序

  • 在项目源文件中创建一下代码(来源:opengl-tutorial)
// GLEW
#define GLEW_STATIC
#include 

// GLFW
#include 

// Include standard headers
#include 
#include 


GLFWwindow* window;


int main(void)
{
    // Initialise GLFW
    if (!glfwInit())
    {
        fprintf(stderr, "Failed to initialize GLFW\n");
        getchar();
        return -1;
    }

    glfwWindowHint(GLFW_SAMPLES, 4);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // To make MacOS happy; should not be needed
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    // Open a window and create its OpenGL context
    window = glfwCreateWindow(1024, 768, "Tutorial 01", NULL, NULL);
    if (window == NULL) {
        fprintf(stderr, "Failed to open GLFW window. If you have an Intel GPU, they are not 3.3 compatible. Try the 2.1 version of the tutorials.\n");
        getchar();
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);

    // Initialize GLEW
    if (glewInit() != GLEW_OK) {
        fprintf(stderr, "Failed to initialize GLEW\n");
        getchar();
        glfwTerminate();
        return -1;
    }

    // Ensure we can capture the escape key being pressed below
    glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);

    // Dark blue background
    glClearColor(0.0f, 0.0f, 0.4f, 0.0f);

    do {
        // Clear the screen. It's not mentioned before Tutorial 02, but it can cause flickering, so it's there nonetheless.
        glClear(GL_COLOR_BUFFER_BIT);

        // Draw nothing, see you in tutorial 2 !


        // Swap buffers
        glfwSwapBuffers(window);
        glfwPollEvents();

    } // Check if the ESC key was pressed or the window was closed
    while (glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS &&
        glfwWindowShouldClose(window) == 0);

    // Close OpenGL window and terminate GLFW
    glfwTerminate();

    return 0;
}
  • 注意最上面的
#define GLEW_STATIC

是为了让编译器使用静态链接库,因为我们只配置了静态链接库。

  • 最后就是ctrl+F5啦~
    OpenGL3环境搭建_第4张图片

你可能感兴趣的:(NOTE,计算机图形学,OpenGL)