Linux(Ubuntu) OpenGL 开发环境

在 PC 平台上开发 OpenGL 可以使用的辅助工具有很多选择,这里我主要参考了 learnopengl 的配置,使用 GLFWGLAD.

准备

基本编译库

sudo apt-get install build-essential

需要 OpenGL 库

sudo apt-get install libgl1-mesa-dev

GLFW

操作指南:http://www.glfw.org/docs/latest/compile_guide.html

下载源码,运行 cmake

正式编译:

make
sudo make install

GLAD

https://glad.dav1d.de/

在这个网站上生成合适的库,我选择了 C/C++ OpenGL Core Version 4.6 然后点击 GENERATE 即可得到压缩包。把压缩包内 include 目录的东西放到本机 include 目录下(/usr/include), 把 src 下的源码拷贝到工程内。

编译

编码,示范代码如下:

#include <glad/glad.h>
#include <GLFW/glfw3.h>
#include <iostream> 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_OPENGL_FORWARD_COMPAT, GL_TRUE); GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
if (window == NULL)
{
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window); if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
} glViewport(0, 0, 800, 600); glClearColor(0.2f, 0.3f, 0.3f, 1.0f); while(!glfwWindowShouldClose(window))
{
glClear(GL_COLOR_BUFFER_BIT); glfwSwapBuffers(window);
glfwPollEvents();
} glfwTerminate(); return 0;
}

编译方式:

g++ -o run.out GlWindow.cpp  glad.c -lglfw3 -lGL -lX11 -lpthread -lXrandr -lXxf86vm -lXinerama -lXcursor -lXi -ldl

可以出现一个暗绿色的窗口。

参考:

https://learnopengl.com/Getting-started/Creating-a-window

Howto Install OpenGL Development Environment

Undefined References Compiling OpenGL/glfw/glew on Ubuntu(g++) [duplicate]

Linux(Ubuntu) OpenGL 开发环境的更多相关文章

  1. Fedora和Ubuntu下安装OpenGL开发环境配置

    Fedora下OpenGl开发环境配置 开发OpenGL工程需要3个库文件和对应的头文件: libglut.so,libGLU.so,libGL.so, gl.h ,glu.h, glut.h 这些库 ...

  2. Ubuntu下OpenGL开发环境的搭建

    由于上了计算机图形学的课,老师叫我们安装OpenGL开发环境,晚上安装了一两个小时,终于搞定了. 1.      建立基本编译环境 sudo apt-get install build-essenti ...

  3. VC 6中配置OpenGL开发环境

    2010,2012中配置类似 http://hi.baidu.com/yanzi52351/item/f9a600dffa4caa4ddcf9be1d VC 6中配置OpenGL开发环境 这里,我习惯 ...

  4. 将linux用在开发环境中

    我是如何将linux用在开发环境中的 1.为什么不直接安装Linux在主机 一直想深入学习一下linux的使用,于是将家里的笔记本装了linux系统,但是要将自己的系统打造一个适合开发的环境确实是一件 ...

  5. 如何将linux用在开发环境中的

    如何将linux用在开发环境中的 1.我为什么要写这篇文章 一直想深入学习一下linux的使用,于是将家里的笔记本装了linux系统,但是要将自己的系统打造一个适合开发的环境确实是一件费心费力的事,而 ...

  6. OpenGL学习进程(2)OpenGL开发环境的搭建

        通过本节,我们来学习一下在Win10 64.VS1013环境下搭建OpenGL的开发环境.     (1)选择一个编译环境: 现在在windows中OpenGL的主流编译工具有Visual S ...

  7. [Modern OpenGL系列(一)]十步搞定OpenGL开发环境

    本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/51292143 OpenGL官网:https://www.opengl.or ...

  8. mac 下 用 glfw3 搭建opengl开发环境

    mac 下 用 glfw3 搭建opengl开发环境 下载编译 glfw3 Build Setting 里面, Library Search Paths -> 设置好编译 glfw 库的路径 H ...

  9. ubuntu java开发环境搭建(jdk+tomcat+eclipse)

    一.jdk的安装配置. 1.下载jdk. 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213 ...

随机推荐

  1. 浅析微信小程序技术架构(原创)

    周末万里虎抽空体验了下微信小程序的DEMO,对小程序的开发有了一个基础的了解与认识,今天就来和大家分享一下我对小程序的看法. 从官方DEMO来看,小程序在技术架构上非常清晰易懂.JS负责业务逻辑的实现 ...

  2. Linux磁盘和文件系统管理

    1.检测并确认新硬盘 挂载好新的硬盘设备并启动主机后,Linux系统会自动检测并加载该硬盘,无须额外安装驱动.执行“fdisk -l”命令即可查看,确认新增硬盘的设备名称和位置.作用:列出当前系统中所 ...

  3. VSTO 函数InStrRev

    返回某一字符串从另一字符串的右侧开始算起第一次出现的位置. 参数 StringCheck 类型:System.String 必选. 搜索的 String 表达式. StringMatch 类型:Sys ...

  4. 七、OpenStack—dashboard组件安装

    1.安装包# yum install openstack-dashboard2.编辑 /etc/openstack-dashboard/local_settings 文件 需要更改的几处内容如下: ) ...

  5. vue自定义键盘事件

    //自定义全局按键修饰符 Vue.config.keyCodes.f2 = 13;//enter为13此时F2==ENTER 调用;@keyup.f2='addData()'

  6. NOIP2000普及组 T1计算器的改良

    主要考字符串处理,把等式从等号中间断开,左边的区域为left,右边的区域为right. 开四个数组分别用来存储区域left和right中未知数的系数,区域left和right中的常数 先处理区域lef ...

  7. 12-JSP&EL&JSTL

    JSP & EL & JSTL jsp Java Server Page 什么是jsp 从用户角度看待 ,就是是一个网页 , 从程序员角度看待 , 其实是一个java类, 它继承了se ...

  8. nginx配置前端代理

    #user nobody;worker_processes 1; #error_log logs/error.log;#error_log logs/error.log notice;#error_l ...

  9. linux系统资源监控

    top命令 1.平均负载(load average): 正在耗费CPU进程与正在等待io的进程之和,三个值分别是一分钟,五分钟,十五分钟的平均负载,负载值只要小于CPU颗粒数属于正常情况 任务进程(T ...

  10. 动态sql语句,非存储过程,如何判断某条数据是否存在,如果不存在就添加一条

    已知一个表 table 里面有两个字段  A1 和 A2 如何用动态语句 判断 A1 = A , A2=B 的数据是否存在,如果不存在,就添加一条数据, A1 = A , A2 = B INSERT  ...