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

相关推荐
CC.GG5 分钟前
【Linux】倒计时和进度条实现
linux
Code Warrior33 分钟前
【Linux】库的制作与原理(1)
linux
生涯にわたる学び40 分钟前
关于之前知识的一些补充 02
linux·arm开发
汐汐咯1 小时前
linux上安装minconda
linux·运维·服务器
小波小波轩然大波1 小时前
Linux服务器配置(mariadb服务器)
linux·服务器·mariadb
忧郁的橙子.1 小时前
k8s 主节点重启后 从节点 get 异常
linux·运维·服务器
Raymond运维1 小时前
Apache介绍和安装
linux·运维·apache
半梦半醒*2 小时前
nginx的访问控制、用户认证、https
linux·运维·服务器·nginx·https·centos
Skrrapper3 小时前
ubuntu?centos?还是 redhat?Linux 系统选哪个?
linux·ubuntu·centos
进击的_鹏3 小时前
【Linux】权限
linux·服务器