0
点赞
收藏
分享

微信扫一扫

iOS Xcode 调试OpenGL shader 步骤详解


iOS Xcode 调试OpenGL shader 步骤详解

注意Apple的官方文档详细的描述了要使用GPU Frame Capture功能,必须使用EAGLContext作为上下文,而且要使用CAEAGLLayer或者GLKView,同时还要保证使用定时器等,去循环调用

[_context presentRenderbuffer:GL_RENDERBUFFER];//方法

否则不能使用GPU Frame Capture功能。

当不能使用GPU Frame Capture功能时,此按钮是灰色不可点击状态

iOS Xcode 调试OpenGL shader 步骤详解_Apple


下面介绍调试步骤:

iOS Xcode 调试OpenGL shader 步骤详解_Apple_02

首先设置 Options里面的GPU Frame Capture为 OpenGL ES 默认为Automatically Enabled默认设置其实也可以调试,但是此处为了过程更符合OpenGL ES的流程,此处设置为OpenGL ES。

然后运行程序

iOS Xcode 调试OpenGL shader 步骤详解_数据_03


iOS Xcode 调试OpenGL shader 步骤详解_数据_04

运行过程中点击Capture按钮 捕获一帧OpenGL ES数据。捕获过程较慢。

捕获完毕之后:

iOS Xcode 调试OpenGL shader 步骤详解_Apple_05

iOS Xcode 调试OpenGL shader 步骤详解_Apple_06

但是到目前并不能看到shader的内容,已经shader内的变量的值,调试shader变量的值才是我们的目的。

iOS Xcode 调试OpenGL shader 步骤详解_数据_07

iOS Xcode 调试OpenGL shader 步骤详解_iOS_08

在选择All GPU Objects -> All 之后 调试shader的 界面就出现了 调试OpenGL ES shader的界面为:

iOS Xcode 调试OpenGL shader 步骤详解_数据_09

此处如果想一边查看frameBuffer一边调试OpenGL ES shader可以这样操作:

iOS Xcode 调试OpenGL shader 步骤详解_数据_10

界面变为:

iOS Xcode 调试OpenGL shader 步骤详解_Apple_11


下面打开frameBuffer界面:

iOS Xcode 调试OpenGL shader 步骤详解_iOS_12

点击后我们想要的界面就出现了 一边为frameBuffer界面一边为调试OpenGL ES shader的界面

iOS Xcode 调试OpenGL shader 步骤详解_iOS_13

下面查看OpenGL ES在渲染此帧时 shader内的各个变量值是多少

iOS Xcode 调试OpenGL shader 步骤详解_iOS_14

此处以查看shader的变量的值为示例,双击Vertex Array Objective #0 

iOS Xcode 调试OpenGL shader 步骤详解_数据_15

shader 内的变量的值为:

iOS Xcode 调试OpenGL shader 步骤详解_Apple_16

使用的shader为:

iOS Xcode 调试OpenGL shader 步骤详解_iOS_17

iOS Xcode 调试OpenGL shader 步骤详解_iOS_18

iOS Xcode 调试OpenGL shader 步骤详解_Apple_19

异常为:

iOS Xcode 调试OpenGL shader 步骤详解_Apple_20

此异常是为了测试调试信息故意这样写的,去掉此处的异常只需要将GLfloat jeffasdColors[]改为:

//GLfloat jeffasdColors[]   = { 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f };

至于原因估计属性OpenGL ES的都清除此处不再解释。


举报

相关推荐

0 条评论