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

相关推荐
zzzsde17 分钟前
【Linux】基础开发工具(3):编译器
linux·运维·服务器
愚戏师1 小时前
Python3 多线程
linux·运维·服务器·python
n***33352 小时前
linux redis简单操作
linux·运维·redis
h***59332 小时前
使用Canal将MySQL数据同步到ES(Linux)
linux·mysql·elasticsearch
xu_yule2 小时前
网络和Linux网络-5(应用层)HTTP协议(方法+报头+状态码)
linux·网络·网络协议·http
lhyzws3 小时前
CENTOS上的网络安全工具(三十二) Portainer Kafka-Clickhouse部署(1)
linux·kafka·centos
q***04634 小时前
Linux环境下Tomcat的安装与配置详细指南
linux·运维·tomcat
BD_Marathon4 小时前
【Zookeeper】监听器原理
linux·分布式·zookeeper
稚辉君.MCA_P8_Java5 小时前
Gemini永久会员 快速排序(Quick Sort) 基于分治思想的高效排序算法
java·linux·数据结构·spring·排序算法
x***44015 小时前
linux 设置tomcat开机启动
linux·运维·tomcat