(目录)
一、OpenGL支持库的下载及安装
1. wayland
Wayland是一个简单的“显示服务器”(Display Server),与X Window属于同一级的事物,而不是仅仅作为X Window下X Server的替代(注:X Window下分X Server和X Client)。也就是说,Wayland不仅仅是要完全取代X Window,而且它将颠覆Linux桌面上X Client/X Server的概念,以后将没有所谓的“X Client”了,而是“Wayland Client”。
Wayland只是一个协议(Protocol),就像X Window当前的协议——X11一样,它只定义了如何与内核通讯、如何与Client通讯,具体的策略,依然是交给开发者自己。
软件包的安装:
sudo apt install libwayland-* wayland-protocols
2. mesa
开放源代码的三维计算机图形库,以开源形式实现了OpenGL的应用程序接口。
# libgl1-mesa-dev,libglu1-mesa-dev
sudo apt install mesa-* libosmesa6-dev
3. libxkbcommon
X11下面默认的键盘输入处理库,专门用于处理wayland下面的键盘I/O事件。
sudo apt install libxkbcommon-*
4. GLFW
屏蔽操作系统底层差异,提供统一的OpenGL API。
https://www.glfw.org/
cmake需要安装:
sudo apt install extra-cmake-modules
可以装个doxygen来自动生C++代码文档。
sudo apt install doxygen
解压下载的GLFW
unzip glfw-3.3.8.zip
#unzip glfw-3.3.8.zip -d /somewhere
修改CMakeLists.txt(改成ON)
cmake_dependent_option(
GLFW_USE_OSMESA "Use OSMesa for offscreen context creation" ON
"UNIX" ON
)
cmake_dependent_option(
GLFW_USE_WAYLAND "Use Wayland for window creation" ON
"UNIX;NOT APPLE" ON
)
使用cmake构建GLFW
cd glfw-3.3.8
cmake -S . -B build
cmake --build build
sudo cmake --install build/
-- Install configuration: ""
-- Installing: /usr/local/lib/libglfw3.a
-- Installing: /usr/local/include/GLFW
-- Installing: /usr/local/include/GLFW/glfw3native.h
-- Installing: /usr/local/include/GLFW/glfw3.h
-- Installing: /usr/local/lib/cmake/glfw3/glfw3Config.cmake
-- Installing: /usr/local/lib/cmake/glfw3/glfw3ConfigVersion.cmake
-- Installing: /usr/local/lib/cmake/glfw3/glfw3Targets.cmake
-- Installing: /usr/local/lib/cmake/glfw3/glfw3Targets-noconfig.cmake
-- Installing: /usr/local/lib/pkgconfig/glfw3.pc
pkg-config --libs --cflags glfw3
二、配置编译选项
GLAD用来管理OpenGL的函数指针,所以在调用任何OpenGL函数之前都需要初始化GLAD。
设置环境变量
GladPath="$HOME/software/glfw-3.3.8/deps"
export GLflag="${GladPath}/glad_gl.c -I ${GladPath} -lGL -lglfw3 -lrt -lm -ldl -lwayland-client -lpthread"
OpenGL的项目中需要用到以下依赖文件:
- glfw-3.3.8/deps/glad/gl.h
- glfw-3.3.8/deps/glad_gl.c
三、验证环境配置
cd glfw-3.3.8/examples
gcc -o splitview splitview.c $GLflag
./splitview
鼠标上去点击拖动一下,ESC退出。。。
CMakeLists.txt编译:
cmake_minimum_required(VERSION 3.15)
project(testbed VERSION 1.0.0)
# 指定C++标准
# set(CMAKE_CXX_STANDARD 11)
# set(CMAKE_CXX_EXTENSIONS OFF)
# set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 自动加入*.cpp
aux_source_directory("${CMAKE_CURRENT_SOURCE_DIR}/src" SRC)
# 自动加入*.h
file(GLOB INC "${CMAKE_CURRENT_SOURCE_DIR}/src/include/*.h")
# Debug or Release
set(CMAKE_BUILD_TYPE Debug)
# 设定额外的g++编译参数
add_definitions("-Wall")
# 设定可执行文件的输出位置
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
# -I 头文件的位置
include_directories(/usr/local/include ${CMAKE_CURRENT_SOURCE_DIR}/deps)
# -L 库文件的位置
link_directories(/usr/local/lib)
set(GLAD_GL "${CMAKE_CURRENT_SOURCE_DIR}/deps/glad_gl.c")
add_executable(testbed ${SRC} ${INC} ${GLAD_GL})
# -l 要链接的库名
set(GL_DEP_LIBS GL glfw3 rt m dl wayland-client pthread)
target_link_libraries(testbed ${GL_DEP_LIBS})
有些终端不支持GLFW(wayland),则会出现如下的错误提示: Failed to initialize GLFW 换一个虚拟终端试试