OpenGL ES Frame Debugger 使用 (1)

436 查看

概述

由于之前的 SnapShow 的项目,大量的接触了OpenGL ES,然后发现其调试非常的困难。
之前我用过苹果Grhapic Tools套件里的OpenGL Shader Builder,算是可以勉强能够看到OpenGL 绘制的结果,但是离一个真正意义上的调试工具还差的太远。

当然随着这几年iOS的快速发展,Xcode也是日新月异,我们可以看到苹果在这里的不断努力。
在Xcode4.2 之后,apple加入了OpenGL ES Frame Capture。
在Xcode5.0 之后,apple加入了一个新的调试openGL的工具,OpenGL ES Frame Debugger,查阅过文档之后才知道怎么去使用它。

OpenGL ES Frame Debugger使用条件

使用它必须满足条件:
支持OpenGL ES 3.0 的API的设备才能使用OpenGL ES frame debugger
然后目前支持OGL ES 3.0 的设备只有

  • iPhone 5S
  • iPad Air
  • iPad Mini with Retina ( iPad Mini 2)

虽然说必须要与OpenGL ES 3.0的API兼容,但是EAGLContext使用的版本不需要是3.0,2.0就可以了

OpenGL ES Frame Debugger 特性

然后这个工具支持的几个特性:

  1. 检查OpenGL ES 状态信息 [xcode4.2]
  2. 对texture,shader等等进行自省
  3. 单步执行看每个绘画调用执行的结果
  4. 单步执行前,可以看到这个图像创建的状况
  5. 新的自动变量显示视图,会自动展示OpenGL ES的状态以及当前OpenGL ES命令所关联的对象 [xcode5.0]
  6. 当前上下文里的问题侦查。
  7. 新的OpenGL ES 断点支持

然后我们来逐个看这些工具怎么使用

使用

首先点开Debug,选择 Capture OpenGL ES Frame

我们可以看到整个Debug界面会变成

然后来看看各个模块
通过切换标签,我们可以将下面的标签切换到GL Context

GL Context

Bound GL Objects


这个还可以从Assistant Editor里面看到Bound GL Objects,更加直观

ALL GL Objects

Context Info

Shader Debug

然后非常重要的一个功能就是实时的调试Program Shader
双击下面的图标

我们可以看到这样的界面

然后你就可以实时的改写这个fragment shader,然后点左下角的刷新按钮,可以在预览界面里面立即看到renderBuffer的变化。

比如我准备改一下上面的fragment shader,
改写之前renderbuffer的预览如下:

现在我将shader改写为:

varying lowp vec4 colorVarying;

void main()
{
    gl_FragColor = mix(vec4(1.0, 1.0, 0.0, 1.0), colorVarying, 0.3);
} 

然后我们就可以看到预览就变为

OK
第一篇就到此为止,其他我继续摸索

引用:

  1. Xcode new feature,OpenGLES support