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

相关推荐
Fcy64817 分钟前
Linux下 进程间关系与守护进程
linux·运维·服务器·守护进程
码农小韩1 小时前
Linux驱动理论(二)——Linux字符设备驱动
linux·嵌入式软件开发·linux操作系统·linux应用开发·linux驱动理论
well06121 小时前
Linux粘滞位与Makefile机制深度解析
linux·运维·服务器
再写一行代码就下班1 小时前
linux sh脚本在windows修改导致无法使用解决方式
java·linux·centos
额额额对了1 小时前
SPI通信
linux·c语言·汇编·单片机·嵌入式硬件·arm
子木HAPPY阳VIP2 小时前
Ubuntu 关闭防火墙操作步骤
linux·运维·ubuntu
王振超wzc2 小时前
嵌入式开发环境搭建--WM软件安装,Ubuntu操作系统安装
linux·运维·ubuntu
GeW4 小时前
制造强国底座:Linux与数据库驱动的新型工业基础设施
linux
xiaoye-duck4 小时前
《Linux 网络编程》深入理解 IO 多路复用:select 函数详解与 Echo 服务实战
linux·网络
Tairitsu_H4 小时前
[Linux系统] 命令行参数 | 环境变量 | 程序地址空间
linux·环境变量·命令行参数·程序地址空间