(目录)


一、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/ image.png
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

image.png

鼠标上去点击拖动一下,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 换一个虚拟终端试试