OpenGL qt&glad&glfw环境搭建

Linux 配置OpenGL环境

安装QT

sudo apt-get install qt5-default qtcreator 

或者在应用管家中查找qt进行安装也可以.

安装glfw

1.安装cmake

sudo apt-get build-dep glfw
sudo apt-get install cmake xorg-dev libglu1-mesa-dev

安装中报了个无法解析域名archive.ubuntukylin.com 的错误,可以查看下自己的DNS Server:

cat /etc/resolv.conf
# This file is managed by man:systemd-resolved(8). Do not edit.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "systemd-resolve --status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs must not access this file directly, but only through the
# symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a different way,
# replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0
search DHCP HOST

如果你的和上边一样,只有127.0.0.53这个地址,那可以通过下面的方式修改,再进行cmake的安装:

1. sudo vim /etc/resolv.conf # 添加如下内容
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 127.0.0.1
2. 输入Esc,:wq,保存并退出
3. sudo /etc/init.d/networking restart

2.在 https://www.glfw.org/ 下载GLFW压缩包到本地,找个文件集命名为GLFW,然后将压缩包内文件提取到该文件夹中,在该文件夹内打开终端窗窗口,执行

makedir build
cd build
cmake ../
make
sudo make install

安装glad

glad与glew作用相同,可以将其看作是glew的升级版

在下载页面选择版本和模式,版本选择最新,profile可以选择核心模式,还是Compatibility,如果不需要对老版本进行支持,建议选择核心模式.选好后点击generate, 跳转到下载页面,点击zip文件链接进行下载:

img

下载后,解压到本地,将include中的文件拷贝到/usr/local/include当中:

cd include
sudo mv * /usr/local/include

配置QT工程设置

考虑到跨平台,而且cmake使用较多,所以我们新建qt工程的时候使用的是camke作为工程配置的, 你可以根据需要,在最后的target_link_libraries中添加所需要的库即可

cmake_minimum_required(VERSION 2.8.12)

project(GLConsole)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
set(SOURCE_FILES main.cpp glad.c) # 源文件

find_package(Qt5Core)

add_executable(${PROJECT_NAME} ${SOURCE_FILES}) 

# 在这里添加lib库
target_link_libraries(${PROJECT_NAME} glfw3 GL m Xrandr Xi X11 Xxf86vm pthread dl Xinerama Xcursor)

配置好以后,我们就写一个Hello OpenGL吧,具体代码如下:

#include <iostream>

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

#define GOUT std::cout
#define GENDL std::endl

enum GError{
    GERROR_WINDOW_FAIL=-1,
    GERROR_GLFW_FAIL = -2,
    GERROR_GLAD_FAIL = -3
};

void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    glViewport(0, 0, width, height);
}

int main()
{
    // system("pause");
    // 初始化glfw
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,4);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,5);
    glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);
    glfwWindowHint(GLFW_RESIZABLE,GL_FALSE);

    // Create GLWindow
    GLFWwindow* window = glfwCreateWindow(800, 600,"Hello OpenGL", nullptr, nullptr);
    if(nullptr == window)
    {
        GOUT<<"Failed to create OpenGL window."<<GENDL;
        glfwTerminate(); // Release GL Resources.
        return GERROR_WINDOW_FAIL;
    }
    glfwMakeContextCurrent(window);


    // Initialize GLAD
    if(!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
    {
        std::cout << "Failed to initialize GLAD" << std::endl;
        return -1;
    }

    // 此函数设置窗口的维度(Dimension)
    glViewport(0, 0, 800, 600);
    glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);

    while(!glfwWindowShouldClose(window))
    {
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    std::cout<<"hello open gl"<<std::endl;

    return 0;
}

参考文章

Linux下OpenGL环境搭建(glfw)

Ubuntu18.04 sudo apt update无法解析域名的解决方案

使用GLFW与GLAD创建窗口并画出三角形

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 227,250评论 6 530
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 97,923评论 3 413
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 175,041评论 0 373
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 62,475评论 1 308
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 71,253评论 6 405
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 54,801评论 1 321
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,882评论 3 440
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,023评论 0 285
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 48,530评论 1 331
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 40,494评论 3 354
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 42,639评论 1 366
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,177评论 5 355
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,890评论 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,289评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 35,552评论 1 281
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 51,242评论 3 389
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 47,626评论 2 370