问题标签 [glkview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
190 浏览

ios - GLKView 快照返回不良颜色

我正在做一些有趣的着色器工作,但是当我调用快照时,我得到了一些奇怪的着色伪影。特别是,红色通道似乎……卡在了高位,也许吧?

不确定要显示什么其他代码,因为我是否将其转换为 JPEG 并将其保存到卷中,或者直接在 UIImageView 中显示它都没有关系,它有一个奇怪的红色色调。

这个问题也有一定的相关性,但它没有答案〜https ://stackoverflow.com/questions/24447265/how-to-avoid-shadows-over-the-glkview-object-in-ios

drawableColorFormat如果我将视图设置为... ,它...实际上似乎是固定的GLKViewDrawableColorFormatRGB565...所以...有人可以解释为什么会这样吗?

0 投票
0 回答
502 浏览

ios - CIContext drawImage 不起作用

我并不真正了解 CI 库,对于从未使用过图形或图像处理的人来说,只有 Apple 文档中的功能描述是不够的。

我需要能够处理每一帧(来自相机),并根据处理后的帧在每个帧上放置一个带有变换箭头的叠加层。因此,每次都从过滤器制作 CGImage 而不是直接绘制 CIImage,这似乎是一种资源浪费,在 iPhone 4S 上我真的需要更多的性能。

因此,在我使用 [context drawImage] 直接绘制 CIImage 的试验中,得到了以下结果

1)我试图在一个简单的 UIView 中绘制上下文,如下所示

[context drawImage:arrow inRect:overlayView.frame fromRect:arrow.extent];

箭头是来自 CIFilter 的有效 CIImage。这是有效的,因为如果我将其转换为 CGImage,它会被投影。

上下文如下所示:

overlayView 已连接,并且 evr 没问题。

2)之后,我尝试使用 GLKView,在 ViewController 上设置委托

  • 矩形中的平局被调用
  • 我可以用一些基本的opengl代码修改glkview颜色

*!!但它从不绘制我的 CIImage,即使它是一个大小可以轻松转换为 CGImage 的有效图像

绘图的代码(glkView内部:drawInRect)是一样的

一些建议?

0 投票
1 回答
894 浏览

ios - 使用/不使用 dispatch_async 从 GLKView drawRect 调用 setNeedsDisplay

我正在GLKView使用按需渲染构建自定义。大多数情况下,视图只会在触摸事件上重绘(这是有效的),但有时我想在循环中重绘一些简短的动画。

我的第一次尝试是这样的:

我的理解Android是,这应该尽可能快地清除屏幕并记录大量“Jo”。实际发生的是“Jo”大约每秒记录一次,视图根本不会被清除,但CPUuse 仍然为 0。

如果我改变

一切都按预期工作。

据我了解drawRect,无论如何都是从主线程调用的,那么为什么会dispatch_async有所不同呢?

所以现在我有三个问题:

  1. “Jo”日志之间的那一秒发生了什么?
  2. 为什么要dispatch_async有所作为?
  3. 在生产中使用这种方法是不好的做法吗?

非常感谢!

编辑:

还有一件事我不明白。

当我使用该[self setNeedsDisplay];方法时,主队列上的所有其他调用似乎都在挨饿。触摸事件不再触发,并且来自 RestKit 的回调永远不会被传递。[self setNeedsDisplay];不知何故不会在队列的末尾添加,而是在开始时添加?

0 投票
1 回答
455 浏览

ios - iOS+OpenGL ES 2.0:为什么 GLKViewController 不调用 update() 和 glkView()?

我正在尝试运行Ray Wenderlich sprite 示例。我已经设置了一个 GLKViewController 和一个 GLKView 并实现了来自相应委托协议的方法。

但是这些方法不是由 GLKViewController 调用的!有人知道我做错了什么吗?

我已经修改了代码以动画一些从底部到顶部的气泡。

请查看来自 GitHub 的克隆:

https://github.com/salocinx/SpriteTestOpenGL

谢谢!

0 投票
0 回答
190 浏览

ios - GLKView 快照返回扭曲的图像

我正在为我的项目使用CIFunHouse苹果演示来应用滤镜效果,当我尝试在 iPad Air 上拍摄 GLKView 的快照时

生成的 UIImage 有失真。看图片 在此处输入图像描述

有任何想法吗?如何解决这个问题。提前致谢。

0 投票
1 回答
414 浏览

ios - 没有 GLKViewController 的 GLKView 手势识别器

我有一个使用 GLKView 的应用程序,没有其他 UI 元素。我没有使用 GLKViewController,也不打算使用。

我所有的应用程序设置都发生在 didFinishLaunchingWithOptions

我的 AppDelegate 接口定义为:

作为此设置的一部分,我正在尝试设置 GestureRecognizer(Tap、Pinch 等) - 但是它们似乎没有触发。

我的选择器定义为:

从我能找到的所有示例代码中,手势识别器通常在 viewDidLoad 方法中设置。然而,似乎 GLKView 没有提供这种方法——当我尝试提供一种方法时,它没有被调用。

据推测,这是 GLKViewController 提供的东西 - 但如前所述,我没有使用 GLKViewController。

请注意,我能够覆盖 touchesBegan 方法(和朋友),并且这些选择器会按预期触发。

知道我做错了什么,或者是否有解决方法?

0 投票
2 回答
973 浏览

ios - 修改 GLKView 上方的 UIVIew 导致崩溃

我的应用程序随机崩溃。最终我发现当我添加 UIVIew 元素并修改它们的中心位置时会发生崩溃。IPad Air 2 上不会发生崩溃,但 IPad Air 上的情况是一致的 - 当 UIViews 打开时,会发生崩溃,并且当视图被移除时崩溃会消失。崩溃与以下堆栈异步发生:

[self.view needDisplay]我在此之前使用调用和修改 UIView 来渲染 OpenGL 。

我应该如何处理这个问题?

0 投票
1 回答
101 浏览

ios - 有没有像 GLKTableViewController 这样的东西?

我目前在我的 iOS 项目中使用连接到 GLKViewController 的 GLKView 来为我的应用程序的背景设置动画,效果很好。现在我介绍了一个 UITableViewController 来显示一些列表。我还想为表格视图的背景设置动画,类似于其他视图控制器。但因此我需要像 GLKTableViewController 这样的东西,但这并不存在。

有人有什么想法吗?

0 投票
1 回答
591 浏览

ios - 根据请求调用 GLKView 渲染

我使用外部渲染器创建应用程序以及如何按请求调用重绘?例如,在 Android 上,我可以使用 requestRenderer() 和 RENDERMODE_WHEN_DIRTY 渲染模式来实现。

我有下一个代码:

0 投票
1 回答
53 浏览

ios - iOS:用户单击 ADBannerView 后切换应用程序导致 OpenGL 崩溃

我有一个 GLKViewController 子类实现,以 ADBannerView 作为子视图。广告加载并呈现得很好。OpenGL 应用程序也可以正常工作。当您单击广告时,会出现弹出窗口。GLKViewController 启用了默认的暂停辞职行为。

如果您在 GLKViewController 的 setPaused 上设置断点,您会注意到如果您在广告弹出窗口可见时切换离开您的应用(双击主页并选择另一个应用) ,则会调用 setPaused:NO。仅当 ADBannerView 弹出窗口可见时才会发生该行为,否则不会在您切换离开应用程序时发生。

即使是在 iOS 9.1 中由 Xcode 7 生成的默认 OpenGL 模板应用程序,我也能够重现上述行为。

1)这是正常的吗?

2) 对我来说,这会导致一致的可重现崩溃,因为在调用 setPaused:NO 之后,会重新绘制 GLKViewController,这会导致 OpenGL 操作在应用程序处于后台时发生。该应用程序此时(正确地)被杀死。