问题标签 [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 投票
1 回答
499 浏览

ios - 如何对包含 GLKView 的视图进行快照

我有一个包含 GLKView 和 UIImageView 的子视图的 viewA。如何将 viewA 的快照保存到图像?我正在使用此代码,适用于任何类型的视图,但 GLKView

0 投票
1 回答
577 浏览

ios - 绘制时GLKView为空白

我正在尝试使用 GLKView 将图像放入 UITableViewCell 以绘制图像。

我在故事板中有一个原型单元,其中有一个 GLKView。它没有选中 Enable setNeedsDisplay。

原型单元有一个名为 PhotoTableViewCell 的自定义类,它是

这在 UITableViewController 中使用

当我导航到 TableView 时,我得到以下日志语句

我的问题是为什么它的视图是空白的?我确信有一个图像,glkView 位于正确的位置(我已经使用 Xcode 中的预览工具对其进行了检查)

为什么调用 draw(rect:) 而不是 glkView(view:GLKView, drawIn rect:CGRect) ?

我在运行 iOS 9.3 的 iPhone 5 上使用 Xcode 8、swift 3,非常感谢任何帮助

0 投票
2 回答
479 浏览

ios - 在 UIView 或 GLKView 上绘图?

我需要画一条带有一些点的分隔线。我决定我将使用 draw 方法来执行此操作,而不是包含分隔符的图像。我会这样做是为了性能和可定制性,因为分隔符有时会发生变化。

现在我研究了draw()方法UIView,我注意到苹果建议GLKView在使用 OpenGL 绘图时使用。

对于一个简单的分隔符,调用OpenGL会不会太麻烦?还是 OpenGL 开销可以忽略不计?那我什么时候想使用原生 UIKitdraw()呢?

仅供参考,我不知道任何一种方法,但想学习两种方法,所以不要回答“你最了解的”。我只是问性能。

0 投票
1 回答
93 浏览

ios - GLKView渲染错误分辨率drawableHeight错误

我用

  • (void)glkView:(GLKView *)view drawInRect:(CGRect)rect

但它提供的分辨率是针对 iPhone 5 的,而我在 iPhone 6 上渲染 drawableHeight 时调用的是 320 而不是 375

任何想法这可能是什么?

0 投票
1 回答
758 浏览

ios - 立即渲染到 GLKView

假设我有一些在 OpenGL ES 中呈现内容的 C++ 代码。这段代码有它自己的渲染循环,在所有平台上都是一样的。依赖于操作系统并且必须为每个平台单独编写的事情之一是创建一个链接到 OpenGL 上下文的窗口,然后用于绘图。我使用GLKView放置作为子视图,UIWindow但从我注意到的第一次尝试渲染结果没有任何结果,一段时间内可见的只是黑屏。

然而,循环的下一次迭代渲染得很好。为了更清楚地看到问题,这里有一个行为相似的最小代码:

prepareOpengl()函数为顶点和诸如此类的东西创建缓冲区,并drawTraingle()清除缓冲区并绘制一个三角形。第一次调用的结果GL_INVALID_FRAMEBUFFER_OPERATION和被调用的调用performSelector:afterDelay:就好了。这可能意味着GLKView延迟创建它的渲染缓冲区。

我真的希望不必等待第一次渲染,而是能够立即绘制到创建的上下文。是显示问题的整个演示项目。

0 投票
0 回答
107 浏览

ios - iOS GLKView 一次绘制调用多个 glUseProgram

假设我在 iOS 中使用 GLKit 进行 OpenGL 渲染。我想画两个不同的物体。

所以我创建了两个着色器程序。当我将每个对象分开绘制时,效果很好。但是,如果我将这两个程序组合在一个框架中。第一个对象不显示。

而且无论我如何更改绘图顺序,第一个绘制的对象都不会显示在屏幕上。

有谁能够帮我?

0 投票
1 回答
283 浏览

ios - 带有模板缓冲区的 glDrawElements 的 GLKView 导致黑屏

我有一个使用 GLKViewController 的 iOS 应用程序,我将渲染缓冲区设置如下:

里面 @interface RootViewController : GLKViewController<UIKeyInput>

但是,当我稍后调用 draw 时:

glDrawElements(getGlPrimitiveType(ePrimType), numIndis, GL_UNSIGNED_SHORT, startIndis);

它导致黑屏Capture GPU Frame,然后出现此错误:

Your app rendered with STENCIL_TEST enabled into a framebuffer without an attached stencil buffer.

有什么我错过的吗?

我记得之前由于深度测试而遇到过同样的问题,我用我不确定模板测试来修复它view.drawableDepthFormat = GLKViewDrawableDepthFormat24;viewDidLoadApple 的文档要么非常少,要么非常笼统,到处都是理论(即:几乎没用)。

0 投票
1 回答
1579 浏览

ios - Core Image 渲染慢

我用 ViewController、GLKView 和 UISlider 创建了测试应用程序。选定过滤器中的滑块更改值。渲染图像非常慢。我的代码有什么问题?

GLKview的测试类:

我如何更改 CIFilter 中的值:

0 投票
0 回答
200 浏览

ios - 将 OpenGL (GLKView) 保存为 iOS 中视频像素缓冲区的覆盖

我有一个 GLKView,它展示了带有纹理的可移动模型。我需要将它混合到同时捕获的视频中。

要将 UI 的其他部分融合到视频中,我使用 GPUImage 框架。因此,当我使用 GLKView 尝试相同的方法时 - 使用 GPUImageUIElement 将 GLKView 混合到视频中。我得到错误GL ERROR: 0x0502 in line:

在我的 CADisplayLink 目标程序中:

, 在哪里

如果我走对了 - 请帮助我了解我错过了什么。如果我完全错了 - 帮助我以正确的方式去做。

谢谢。

0 投票
1 回答
180 浏览

ios - 如何在显示刷新率方面运行计时器?

我有一个计算滚动区域速度的对象。当用户将手指从屏幕上移开时,该对象每 10 毫秒触发一次事件以更新滚动位置(关于计算的速度)并刷新屏幕(通过调用 GLKView 对象的 setNeedsDisplayInRect)。

我只是担心将我的事件与实际显示刷新率(通常为 60 fps)同步。在 ios 下,他们有什么方法可以在每次显示刷新时触发一个事件(所以大约每 16 毫秒)?也许我必须cadisplayLink为此使用?