• 目的:ubuntu配置使用opengl - 初探-创建一个空窗口


    目的:ubuntu配置使用openGL - 初探-创建一个空窗口

    环境:

    系统:Ubuntu18.04
    环境:g++
    
    • 1
    • 2

    步骤:

    Ubuntu下使用openGL,搭建配置环境并测试窗口
    1、openGL库,需要单独安装,由于本机是vmware虚拟机Ubuntu18.04,所以显卡是使用不了的。

    2、glfw头文件和库,参考其他文章(https://blog.csdn.net/Alger_magic/article/details/128168157?spm=1001.2014.3001.5502)中编译方法获得(GLFW 是配合 OpenGL 使用的轻量级工具程序库,缩写自 Graphics Library Framework(图形库框架)。GLFW 的主要功能是创建并管理窗口和 OpenGL 上下文,同时还提供了处理手柄、键盘、鼠标输入的功能。有类似功能的库还有 GLUT和 SDL。)。

    3、glad头文件和资源文件(GLAD作为开源库,用于管理OpenGL函数指针,使OpenGL基础渲染变得更加简单),下载链接https://glad.dav1d.de/, glad是在线直接选下载对应的头文件和源文件。
    在这里插入图片描述
    在这里插入图片描述

    1.构建工程

    1、安装依赖

    安装openGL,实际安装#1 #2两步即能运行openGL

    #0、安装查看OpenGL版本支持的工具
    sudo apt-get install mesa-utils
    glxinfo | grep OpenGL
    
    
    #1、安装了opengl的核心库
    
    sudo apt-get install libgl1-mesa-dev*
    sudo apt-get install build-essential
    
    #2、安装OpenGL Library
    
    sudo apt-get install libgl1-mesa-dev
    
    #3、安装OpenGL Utilities,
    
    sudo apt-get install libglu1-mesa-dev
    sudo apt-get install libegl1-mesa-dev
    
    #4、安装OpenGL Utility Toolkit
    
    sudo apt-get install libglut-dev
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2、构建工程

    按照如下样式构建工程

        -opengl_test
        ├─3rdparty
        │  ├─glad
        │  │  ├─include
        │  │  │  ├─glad
        │  │  │  │  └─glad.h
        │  │  │  └─KHR
        │  │  │     └─khrplatform.h
        │  │  └─src
        │  │     └─glad.c
        │  └─glfw
        │      ├─include
        │      │  ├─glfw3.h
        │      │  └─glfw3nativ.h
        │      └─lib
        │         └─libglfw.so
        ├─build
        ├─include
        ├─src
        │  └─opengl_win.cpp 
        ├─CMakelists.txt
        └─readme.txt
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    2. 写入测试代码

    CMakelists.txt

    cmake_minimum_required(VERSION 2.8)
    
    project(opengl_test)
    
    # Include files
    # glfw
    include_directories( ${PROJECT_SOURCE_DIR}/3rdparty/glfw/include/)
    link_directories(${PROJECT_SOURCE_DIR}/3rdparty/glfw/lib/)
    #glad
    include_directories(${PROJECT_SOURCE_DIR}/3rdparty/glad/include/)
    
    
    add_executable(opengl_win 
                    ${PROJECT_SOURCE_DIR}/src/opengl_win.cpp
                    ${PROJECT_SOURCE_DIR}/3rdparty/glad/src/glad.c)
    
    target_link_libraries(opengl_win glfw GL dl)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    opencl_win.cpp

    #include 
    
    #include 
    #include 
    
    void framebufer_size_callback(GLFWwindow *_window, int _width, int _height);
    
    int main()
    {
    	glfwInit();
    
    	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    
    	GLFWwindow *win_handle = glfwCreateWindow(600, 600, "opengl_test", NULL, NULL);
    	if (win_handle == NULL)
    	{
    		std::cout << "Failed to crate GLFW Window" << std::endl;
    		glfwTerminate();
    
    		return -1;
    	}
    	glfwMakeContextCurrent(win_handle);
    
    	if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
    	{
    		std::cout << "Failed to initialize GLAD" << std::endl;
    		return -1;
    	}
    
    	glViewport(0, 0, 600, 600);
    
    	glfwSetFramebufferSizeCallback(win_handle, framebufer_size_callback);
    
    	while (!glfwWindowShouldClose(win_handle))
    	{
    		glfwSwapBuffers(win_handle);
    		glfwPollEvents();
    	}
    
    	glfwTerminate();
    
    	return 0;
    }
    
    void framebufer_size_callback(GLFWwindow *_window, int _width, int _height)
    {
    	glViewport(0, 0, _width, _height);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    3.编译执行
    cd build
    
    cmake .. && make
    
    ./opengl_win
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    demo源代码:
    https://download.csdn.net/download/Alger_magic/87240079

  • 相关阅读:
    Java基础面试,重载和重写的区别
    [阅读笔记18][CITING]LARGE LANGUAGE MODELS CREATE CURRICULUM FOR INSTRUCTION TUNING
    用Python执行JavaScript代码,这些方法你不可不知!
    开源啦!一键部署免费使用!Kubernetes上直接运行大数据平台!
    推荐一个日历转换开源工具库,支持C#、Java、PHP等主流的语言
    做完等级保护需要多长时间?
    【JUC】AQS源码剖析
    AIO开放接口平台免费畅享ChatGPT聊天、联网互动、学术等服务!更有DALL·E 3最强AI绘图功能!
    [WPF] 使用 HandyControl 的 CirclePanel 画出表盘刻度
    Sql Server SQL查询优化方法
  • 原文地址:https://blog.csdn.net/Alger_magic/article/details/128168593