OpenGL ES

(译)OpenGL ES2.0 – Iphone开发指引

丶灬走出姿态 提交于 2019-12-07 10:55:44
本文已有最新Swift版 https://www.raywenderlich.com/5146-glkit-tutorial-for-ios-getting-started-with-opengl-es 教程截图: OpenGL ES 是可以在iphone上实现2D和3D图形编程的低级API。 如果你之前接触过 cocos2d,sparrow,corona,unity 这些框架,你会发现其实它们都是基于OpenGL上创建的。 多数程序员选择使用这些框架,而不是直接调用OpenGL,因为OpenGL实在是太难用了。 而这篇教程,就是为了让大家更好地入门而写的。 在这个系列的文章中,你可以通过一些实用又容易上手的实验,创建类似hello world的APP。例如显示一些简单的立体图形。 流程大致如下: ·创建一个简单的OpenGL app ·编译并运行 vertex & fragment shaders ·通过vertex buffer,在屏幕上渲染一个简单矩形 ·使用投影和 model-view 变形。 ·渲染一个可以 depth testing的3D对象。 说明: 我并非OpenGL的专家,这些完全是通过自学得来的。如果大家发现哪些不对的地方,欢迎指出。 OpenGL ES1.0 和 OpenGL ES2.0 第一件你需要搞清楚的事,是OpenGL ES 1.0 和 2.0的区别。

Xcode 调试OpenGL shader 步骤详解

不打扰是莪最后的温柔 提交于 2019-12-06 19:11:07
iOS Xcode 调试OpenGL shader 步骤详解 注意Apple的官方文档详细的描述了要使用GPU Frame Capture功能,必须使用EAGLContext作为上下文,而且要使用CAEAGLLayer或者GLKView,同时还要保证使用定时器等,去循环调用 [_context presentRenderbuffer:GL_RENDERBUFFER];//方法 否则不能使用GPU Frame Capture功能。 当不能使用GPU Frame Capture功能时,此按钮是灰色不可点击状态 下面介绍调试步骤: 首先设置Options里面的GPU Frame Capture为OpenGL ES默认为Automatically Enabled默认设置其实也可以调试,但是此处为了过程更符合OpenGL ES的流程,此处设置为OpenGL ES。 然后运行程序 运行过程中点击Capture按钮捕获一帧OpenGL ES数据。捕获过程较慢。 捕获完毕之后: 但是到目前并不能看到shader的内容,已经shader内的变量的值,调试shader变量的值才是我们的目的。 在选择All GPU Objects -> All 之后调试shader的界面就出现了调试OpenGL ES shader的界面为: 此处如果想一边查看frameBuffer一边调试OpenGL ES

GPUImage简单实用及碰到的问题

六月ゝ 毕业季﹏ 提交于 2019-11-29 20:54:37
正式开始之前先介绍一下GPUImage,这是一款基于OpenGL ES 2.0的开源图像处理库。在iOS上将OpenGL ES的使用封装成Objective-C接口,可以用来给图像、相机视频、视频等添加滤镜等渲染操作。GPUImage一代已经不再维护,OC只能给iOS和Mac使用;同时有GPUImage2使用Swift(基于Swift 3)开发,可以给Mac, iOS和Linux使用;最新的GPUImage3仍在开发完善中,基于Swift4,并且将OpenGL ES替换成苹果的Metal,由于是苹果官方封装GPU方法,可以预见会比使用OpenGL ES的性能效率更高。本文使用的仍是第一代GPUImage。 接入GPUImage使用cocoapods直接接入就行,就不再赘述。下面是一个简单的滤镜使用: GPUImage使用有三个关键点,input, output, filter(filter也是output但主要实现了滤镜,所以分开说)。output一般是用来承载图像内容输出,可以是GPUImageUIElement(通过UIView来创建并承载整个UIView的内容), GPUImagePicture(使用UIImage或者CGImage之类的图像来创建);filter就是所使用的滤镜,可以使用GPUImage自带的比如GPUImageGaussianBlurFilter,

编译《OpenGL ES 3.0 编程指南》书中代码

∥☆過路亽.° 提交于 2019-11-29 03:29:57
之前写过一篇 blog 刚开始编译时,没有编译过去。因而转向了 mingw32 。最近想起来就想再编译一次。于是写篇记录一下。 按照书中要求先下载 AdrenoSDK ,我用的是 adrenosdk_5_0.zip 这个版本。下载完成后解压到指定目录。 在 Windows 平台使用 cmake 生成 solution 。 步骤很简单。解压后 adreno 含有编译好的 .lib 和 .dll 文件。我懒得再编译 adreno 了,就直接使用了自带的。假设 sdk 被解压在 sdk 目录。 在 sdk\Development\Lib 存放相关的 .lib 文件有 x64 和 win32 平台。 sdk\AdrenoSDK\Bin 和 sdk\AdrenoSDK\Bin_d 存放了相关的 dll 文件。 于是乎,就可以生成 solution 文件了。先 clone 下 opengles3-book 代码,然后在目录中创建一个 build 目录,然后在 build 目录中执行下面直接给命令。 cmake .. -DEGL_LIBRARY:PATH=E:\sdk\adreno_sdk\AdrenoSDK\Lib64\libEGL.lib -DOPENGLES3_LIBRARY:PATH=E:\sdk\adreno_sdk\AdrenoSDK\Lib64\libGLESv2.lib -G