在Linux中开发OpenGL——检查开发环境对OpenGL ES的支持

由于移动端GPU规模有限,厂商并没有实现完整的OpenGL特性,而是实现了它的子集------OpenGL ES。因此如果需要开发的程序要支持移动端平台,最好使用OpenGL ES开发。

1、 下载支持库、OpenGL ES Demo

1.1、下载PowerVRSDK支持库作为准备,里面自带了编译好的libEGL.so和ligGLESv2.so(非必须):

复制代码
git clone`
`https://github.com/powervr-graphics/Native_SDK`
`

1.2、下载OpenGL ES Demo,方便直接测试环境:

复制代码
git` `clone https://github.com/danginsburg/opengles3-book.git`
`

为什么选择这个库呢,因为它根目录就有一个很规范的CMakeLists.txt可供参考,而且它教程每个章节里面也有CMakeLists.txt配置文件可供直接参考,也因为本身就有配置文件,所以可以直接测试环境编译OpenGL ES工程代码是否正常,不用自己额外写一些Demo逻辑和配置文件。

例如它的根目录CMakeLists.txt配置如下:

复制代码
cmake_minimum_required(` `VERSION` `2.6` `)`
`project( ES3_Book )`

`include_directories( External/Include )`
`include_directories( Common/Include )`

`find_library( OPENGLES3_LIBRARY GLESv2 "OpenGL ES v3.0 library")`
`find_library( EGL_LIBRARY EGL "EGL 1.4 library"` `)`
 
`SUBDIRS( Common`
`         Chapter_2/Hello_Triangle`
`         Chapter_6/Example_6_3 `
`         Chapter_6/Example_6_6`
`         Chapter_6/MapBuffers`
`         Chapter_6/VertexArrayObjects`
`         Chapter_6/VertexBufferObjects`
`         Chapter_7/Instancing`
`         Chapter_8/Simple_VertexShader`
`         Chapter_9/Simple_Texture2D `
`         Chapter_9/Simple_TextureCubemap`
`         Chapter_9/MipMap2D`
`         Chapter_9/TextureWrap`
`         Chapter_10/MultiTexture`
`         Chapter_11/MRTs`
`         Chapter_14/Noise3D`
`         Chapter_14/ParticleSystem`
`         Chapter_14/ParticleSystemTransformFeedback `
`         Chapter_14/Shadows `
`         Chapter_14/TerrainRendering )`	
		
`

拿其中一个子工程的配置来作为例子举例:

复制代码
add_executable( Hello_Triangle Hello_Triangle.c )`
`target_link_libraries( Hello_Triangle Common )`
`

以这个Demo为出发点学习,可以很好地了解Linux下C工程和CMake的配置套路,方便以后写自己的工程。其中find_library中可以看到它需要的OpenGL ES库和EGL库。

2、 工程环境配置

进入Demo工程根目录,例如我的是:

复制代码
~/Documents/Book/OpenGL/opengles3-book

进入后输入:

复制代码
mkdir` `build`
`cd` `build

(这个文件夹是用于存放编译后的输出文件的)

然后再输入

复制代码
cmake` `../

如果如图所示没有任何错误就可以继续了:

之后编译生成的产物就会放入build目录中。

3、 ccmake检查和配置

进入Demo工程目录,输入如下命令:

复制代码
ccmake` `../

3.1、 如果已经有libGLESv2.so:

如果按照前文(在Linux中开发OpenGL------环境搭建-CSDN博客)所说安装好了OpenGL开发环境,大概率已经有该支持库了。可以看到我这里的ccmake帮我找到了根工程需要的EGL_LIBARY和OPENGLES_LIBRARY的对应位置,因此我这里库已经是齐全了的。

3.2、 如果没有LibGLESv2.so:

假如EGL_LIBARY和OPENGLES_LIBRARY的对应位置为空,那刚刚下载的PowerVR SDK就有用了。此时你可以通过设置EGL_LIBARY和OPENGLES_LIBRARY库的位置指向到powervr-sdk/Native_SDK/lib/Linux_x86_64/libEGL.so和libGLESv2.so即可。像这位博主的一样:

[OpenGL ES 3.0编程指南]编译环境的搭建_linux编译opengl es教程-CSDN博客

4、 编译

在build文件路径中输入:

复制代码
cmake

如图所示,等待编译完成后

输入

复制代码
ls

就可以看到编译产物了:

5、 运行:

进入/build/Chapter_14/Shadows文件夹,输入ls,可以看到编译好的Shadows程序:

此时输入./Shadows即可运行该OpenGL ES程序,效果如图:

相关推荐
墨北x23 分钟前
2025 年福建省职业院校技能大赛网络建设与运维赛项Linux赛题解析
linux·运维·服务器
码农000000124 分钟前
Linux开启3306端口,开启远程连接
linux·运维·服务器
孤寂大仙v1 小时前
【Linux笔记】——进程信号的保存
java·linux·笔记
Huazzi.1 小时前
使用SSH协议克隆详细步骤
linux·运维·学习·ssh·编程
Christal_pyy1 小时前
树莓派4基于Debian GNU/Linux 12 (Bookworm)开启VNC,使用MobaXterm连接VNC出现黑屏/灰屏问题
linux·运维·debian
珹洺1 小时前
Linux操作系统从入门到实战(六)Linux开发工具(上)详细介绍什么是软件包管理器,Linux下如何进行软件和软件包的安装、升级与卸载
linux·运维·服务器
小白的白是白痴的白1 小时前
配置yarn模式
linux·运维·服务器
s_little_monster1 小时前
【Linux】socket网络编程之TCP
linux·运维·网络·笔记·学习·tcp/ip·学习方法
林鸿风采1 小时前
内网服务器之间传输单个大文件最佳解决方案
linux·python·文件传输
belldeep2 小时前
WSL 安装 Debian 12 后,Linux 如何安装 redis ?
linux·redis·debian