在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程序,效果如图:

相关推荐
Johny_Zhao9 小时前
网络安全等级保护测评实施方案
linux·网络·人工智能·网络安全·信息安全·云计算·等保测评·系统运维·itsm
落羽的落羽10 小时前
【AI】快速理解AI应用的相关名词概念
linux·c++·人工智能·python·计算机网络·算法
刚入门的大一新生10 小时前
Linux-进程控制
linux·运维·服务器·c++
上火的金鱼妹10 小时前
K8S基础组件作用和关系整理
linux·运维·服务器·kubernetes
Vcaker10 小时前
Linux学习25-harbor私有仓库部署
linux·运维·学习
刃神太酷啦10 小时前
Redis 进阶核心:持久化 (RDB/AOF)、事务与主从复制全解析----《Hello Redis!》(5)
linux·c语言·数据库·c++·redis·缓存·bootstrap
编程的一拳超人10 小时前
DeepSeek Harness Linux/macOS/Windows 本地下载、启动与模型配置指南
linux·windows·macos·deepseek
时凌云.10 小时前
【2026最新】JDK 下载安装与环境配置全教程(Windows/Mac/Linux 三平台,零基础友好)
java·linux·macos
不懂的浪漫11 小时前
ToDesk 连接 Linux 后分辨率过低的解决方法
linux·运维·数据库
广州灵眸科技有限公司12 小时前
从手动三步到上电即连:4G模组systemd开机自连方案
linux·运维·服务器·开发语言·网络·人工智能·php