目的:ubuntu配置使用openGL - 初探-创建一个空窗口
环境:
系统:Ubuntu18.04
环境:g++
步骤:
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
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
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)
opencl_win.cpp
#include <iostream>
#include <glad/glad.h>
#include <glfw3.h>
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);
}
3.编译执行
cd build
cmake .. && make
./opengl_win
demo源代码:
https://download.csdn.net/download/Alger_magic/87240079