Linux mint 下OpenGL环境搭建

写在前面

本文的内容是基于Linux mint的,所以Debian系列都是通用的。

编程环境

1.

$sudo apt-get install build-essential
$sudo apt-get install xorg-dev
$sudo apt-get install libglu1-mesa-dev
$sudo apt-get install cmake

2.GLFW

我们通过下载源码包的方式自己编译需要需要的库。

a.获得makefile

$cd glfw-3.1.1(这里是下载的源码包根目录)
$cmake .

b.生成libglfw3.a

$cd CMakeFiles
$make
$sudo make install(这里用sudo,否则无法自动将生成的库文件和相关头文件放到/usr/local目录下

3.GLEW

$sudo apt-get install libglew-dev

编译运行

环境搭建好之后,就可以编译运行我们的源码了。

下面是我提供的一份OpenGL代码

#define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>

void keyCallback(GLFWwindow* win, int key,
 int scancode, int action, int mode);

static const GLuint WIDTH = 800, HEIGHT = 600;

int main()
{
    std::cout<<"启动glfw上下文, OpenGL 3.3"<<std::endl;
    // 初始化glfw3
    glfwInit();
    // 设置glfw选项
    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);

    // 创建一个glfwwindow对象
    auto win = glfwCreateWindow(WIDTH, HEIGHT, "learn opengl", nullptr, nullptr);
    if(win == nullptr)
    {
         std::cout<<"创建win失败"<<std::endl;
         glfwTerminate();
         return -1;
    }

    glfwMakeContextCurrent(win);
    // 设置按键回调
    glfwSetKeyCallback(win, keyCallback);

    glewExperimental = GL_TRUE;
    if(glewInit() != GLEW_OK)
    {
        std::cout<<"glew初始化失败"<<std::endl;
        return -1;
    }

    glViewport(0, 0, WIDTH, HEIGHT);
    while(!glfwWindowShouldClose(win))
    {
        // 检查是否有事件
        glfwPollEvents();

        // 渲染
        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);

        // 交换缓冲区
        glfwSwapBuffers(win);
    }

    glfwTerminate();

    return 0;
}

void keyCallback(GLFWwindow* win, int key,
 int scancode, int action, int mode)
{
    // 如果按下esc则退出
    std::cout<<"key"<<std::endl;
    if(key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
        glfwSetWindowShouldClose(win, GL_TRUE);
}

下面就是在linux下编译opengl程序需要的命令了,也是我写这篇文章的主要原因

g++ hello_OpenGl.cpp -o hello_OpenGL -lGLEW -lglfw3 -lXxf86vm -lXinerama -lXcursor -lGL -lX11 -lpthread -lXrandr -lXi -std=c++11

这条命令花了我很多心思,是结合了StackOverFlow以及我自己的思考得出的结果。写这篇博客主要就是为了记录这条命令,免得到时候自己换系统的时候又要辛苦的查资料什么的,也顺便帮助和我有一样需要的朋友快速解决这个烦恼。

顺便提一句

-lpthread 和 -std=c++11

这两个不是必须的,一个是程序中需要线程库时需要添加,一个是需要用到C++11的时候添加的,其他的都是必须的。

原文链接: https://www.cnblogs.com/No-20/p/4751201.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    Linux mint 下OpenGL环境搭建

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/220924

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午11:06
下一篇 2023年2月13日 上午11:06

相关推荐