OpenGL学习笔记01--GLFW、GLAD、GLUT安装

860 阅读2分钟

OpenGL学习笔记01--GLFW、GLAD、GLUT安装

1.GLFW

www.glfw.org/download.ht…

进入该网站直接下载32-bit Windows binaries

ps:注意旁边的提示,vs10及以上的下载64位,其他下载32位,下载好后,直接解压。

2.GLAD

glad.dav1d.de/

如图所示,其中gl选择最新版的即可。选择好后,Options中勾选 Generate a loader,再点击下方GENERATE。

下载后解压,此时你将得到这两个文件夹。

再新建一个文件夹(例如:OpenGL,不要是中文),新建三个子文件夹,分别为include,lib,src。

将glfw-3.3.2.bin.WIN64->include->GLFW复制到OpenGL->include中

将glfw-3.3.2.bin.WIN64->lib-vc2019(对应你所使用的版本)->glfw3.lib复制到OpenGL->lib中

将glad->include下面的两个文件夹全部复制到OpenGL->include中

将glad->src下的内容复制到OpenGL->src中

在vs中新建一个空项目

将刚刚建好的OpenGL文件夹复制到和项目同级目录中

右键项目选择属性,VC++目录->包含目录,将OpenGL中的include文件夹添加进来,再选择VC++目录->库目录,将OpenGL中的lib文件夹添加进来。

ps:记得选择所有配置,所有平台

在链接器->输入->附加依赖项选项卡里添加 opengl32.lib glfw3.lib

填写完成后,点击应用,确定后退出。

右键源文件,添加现有项,将OpenGl->src下的glad.c文件添加进来

一切完成后,新建一个cpp文件,跑测试代码。

#include <glad/glad.h>
#include <GLFW/glfw3.h>

#include <iostream>

void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow* window);

// settings
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;

int main()
{
    // glfw: initialize and configure
    // ------------------------------
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

#ifdef __APPLE__
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif

    // glfw window creation
    // --------------------
    GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL);
    if (window == NULL)
    {
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);
    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

    // glad: load all OpenGL function pointers
    // ---------------------------------------
    if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
    {
        std::cout << "Failed to initialize GLAD" << std::endl;
        return -1;
    }

    // render loop
    // -----------
    while (!glfwWindowShouldClose(window))
    {
        // input
        // -----
        processInput(window);

        // render
        // ------
        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);

        // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.)
        // -------------------------------------------------------------------------------
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    // glfw: terminate, clearing all previously allocated GLFW resources.
    // ------------------------------------------------------------------
    glfwTerminate();
    return 0;
}

// process all input: query GLFW whether relevant keys are pressed/released this frame and react accordingly
// ---------------------------------------------------------------------------------------------------------
void processInput(GLFWwindow* window)
{
    if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
        glfwSetWindowShouldClose(window, true);
}

// glfw: whenever the window size changed (by OS or user resize) this callback function executes
// ---------------------------------------------------------------------------------------------
void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    // make sure the viewport matches the new window dimensions; note that width and 
    // height will be significantly larger than specified on retina displays.
    glViewport(0, 0, width, height);
}

正确运行结果如下:

如果运行报错,将这里改为x64后,再运行!!!

喜大普奔!!!GLFW和GLAD安装成功!!!

3.GLUT

www.opengl.org/resources/l…

从官网得知目前推荐使用freeglut。这里提供一个OpenGL库,比较方便。pan.baidu.com/s/1iXQTo2dB… 提取码:yvtx 下载后解压,配置OpenGL也就是需要把这include,dll,lib三个文件夹放到安装对应的文件夹中。

按照下图路径找到对应文件夹,下图是vs2019的路径,其他版本可以自行寻找。

将解压得到的lib文件夹和include文件夹复制到图中对应的文件夹中 再把dll文件夹中的5个dll文件粘贴到C:\Windows\System32和C:\Windows\SysWOW64

再运行测试代码,正确结果如下图所示:

#include <openGL/glut.h>
 
void init(void)
{
	glClearColor(1.0, 1.0, 1.0, 0.0);
 
	glMatrixMode(GL_PROJECTION);
	gluOrtho2D(0.0, 200.0, 0.0, 150.0);
}
 
void lineSegment(void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	glColor3f(1.0, 0.0, 0.0);
	glBegin(GL_LINES);
	glVertex2i(180, 15);
	glVertex2i(10, 145);
	glEnd();
 
	glFlush();
}
 
void main(int argc, char** argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
	glutInitWindowPosition(50, 100);
	glutInitWindowSize(400, 300);
	glutCreateWindow("Demo OpenGL Program");
 
	init();
	glutDisplayFunc(lineSegment);
	glutMainLoop();
 
}

ps:这里是#include <openGL/glut.h>,因为glut.h头文件保存在openGL文件夹中。网上有的教程的测试代码或者教学代码是#include <GL/glut.h>,直接复制用来跑代码要先修改。

按照上述操作,你已经可以开始OpenGL学习,无论你是使用蓝宝书学习还是在learnopengl-cn.github.io/中学习,都够用了。