问题标签 [caeagllayer]

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 回答
3047 浏览

ios - 为什么 UIScrollView 会暂停我的 CADisplayLink?

我有一个由 CAEAGLLayer 支持的视图,它位于 UIScrollView 内。当我开始滚动时,调用 openGL 视图的 -draw 方法的 CADisplayLink 停止被调用。

我验证了滚动时不会调用我的 runloop 启动/停止方法。-draw 方法根本不会在滚动开始时立即被调用,而是在滚动结束时继续被调用。

UIKit 是否会在滚动开始后立即停止 CADisplayLink 触发?

显示链接被添加到运行循环中,如下所示:

可能这个run loop模式和UIScrollView有冲突?即使 UIScrollView 正在滚动,是否还有其他运行循环模式或替代解决方案来保持 CADisplayLink 触发?

我认为任何应用程序中都可以有不止一个 CADisplayLink。那是错的吗?

0 投票
0 回答
155 浏览

opengl-es - 更改 ios 6 Maps 的 CAEAGLLayer 颜色

使用新的 Apple Maps,MKMapTileView不再工作,我试图弄清楚如何操作负责显示整个地图的图层(及其内容)。View/Layer感兴趣的是层VKMapCanvas,它是一个CAEAGLLayer.

有没有机会继承和覆盖/混合这个(VKMapCanvas)的方法或实现?

0 投票
0 回答
180 浏览

mkmapview - MKMapView & iOS6,避免地图即时更新

我已经实现了一个MKMapView用于显示卫星地图的应用程序。在我的应用程序中,我需要以编程方式更新地图的中心以及地图视图的转换。在 iOS 6 之前,这很好用。在 iOS 6 上,不能再加入两步操作。也就是说,当我尝试设置地图中心时,它会立即刷新,在我有机会设置转换之前。这很糟糕,因为一瞬间,我可以看到中间表示。查看新MKMapView实现的内部,我看到它现在使用 OpenGL:

VKMapCanvas: 0x9d29440; frame = (0 0; 1217.57 1217.57); clipsToBounds = YES; layer = [CAEAGLLayer]: 0x9d2a610

我认为问题在于 OpenGL 表面会立即更新。我的问题是,无论如何启用/禁用更新VKMapCanvas

0 投票
0 回答
478 浏览

ios - OpenGL ES 从 iOS6 的变化

这是一个相当开放的问题。对不起,第一个。

我有显示使用 Open GL ES 2.0 的视频流的代码。它适用于 iOS5,但在我将设备更新到 iOS6 后出现问题。视频根本没有显示。当我检查流和解码在 iOS6 上运行良好时。只有渲染不能正常工作。

我使用 CAEAGLLayer 视图和纹理(带有 glTexImage2D 函数)来渲染视频。

如果您以前遇到过类似的问题,我想得到一些建议。任何评论都可能有助于我开始挖掘它。

再次抱歉信息不足和这个开放式问题。

更新: 我找到了一个简单的示例程序,它显示了我的相同问题。

http://db-in.com/blog/2011/02/all-about-opengl-es-2-x-part-23/

此示例程序适用于 iPhone 5.1 模拟器,但不适用于 iPhone 6 模拟器(黑屏)。任何人都可以检查此示例并让我知道问题所在?我认为它应该和我的有类似的问题。

BR,Wonil。

0 投票
2 回答
2389 浏览

ios - 透明 OpenGL CAEAGLLayer

我试图渲染一个 opengl 视图(CAEAGLLayer)透明,这样我就可以在它后面放一个 UIView。我正在使用以下设置来实现透明的 opengl 背景。

我的问题是我的 opengl 场景中的对象现在是透明的,我可以看穿它们(大约 50% 的透明度)。

如何使opengl场景的背景透明,同时场景中的对象仍然不透明。

请注意,所有图层、UIView 和 UIWindows 的 alpha 值为 1.0,并且场景中的片段着色器不会导致问题,因为当 layer.opaque 设置为 YES 时,一切都是纯色。我还应该补充一点,如果有帮助的话,这是一个统一的项目。

编辑:

部分代码由统一设置。

0 投票
1 回答
816 浏览

iphone - iPhone 5 CAEAGLLayer 返回错误的边界

出于某种原因,我的 OpenGL 应用程序在 ios6 4 英寸 Retina 模拟器中运行时获得了错误的 CAEAGLLayer 边界信息。

CAEAGLLayer 边界打印为

从此代码:

然后窗口内容向上移动,0,0 不再位于正确的位置。

任何人都知道为什么将 CAEAGLLayer 设置为不正确的宽度/高度?

谢谢

0 投票
0 回答
388 浏览

ios - Is multiple CAEAGLLayer available in iOS?

I get an OpenGL view by

and I want to add sublayer to it by

The purpose to think this is that I want to draw different thing on different layer so that I can remove something by simply call removeSubLayer:enter code here.

Is it available?

0 投票
0 回答
101 浏览

iphone - iPhone OpenGL ES 保存/加载

我正在使用 GLPaint 示例,但不知道如何实现“保存到”和“从”文件中“加载”。我不想要绘图点,而是保存实际缓冲区,以便稍后加载它,如 Photoshop 文档或任何其他流行的绘图应用程序。这怎么可能?

保存到图像似乎不起作用,除非它可以在加载后将其渲染为 opengl,但即便如此,压缩和转换过程似乎也会丢失一些质量。

我考虑过保存绘图点,但加载似乎很困难,因为不知何故,颜色也必须保存并在加载后对齐。

注意:GLPaint 使用 caegllayer。

谢谢,奥斯汀

0 投票
2 回答
3008 浏览

ios - 如何使用 openGL 上下文设置 CAEAGLLayer 子类:当前绘制帧缓冲区无效

我正在尝试使用 gl 上下文设置 CAEAGLLayer 子类。也就是说,我没有创建一个返回 CAEAGLLayer 的 UIView 子类并将 gl 上下文从 UIView 子类中绑定到该层,而是直接对该层进行子类化并尝试在该层的 init 中设置上下文,如下所示:

到目前为止,一切似乎都很好。但是,然后我尝试使用“直通”顶点/片段着色器对创建一个着色器程序,并且在链接程序时没有返回错误,验证失败,提示:“当前绘制帧缓冲区无效。”

链接和验证着色器程序的代码(附加着色器后)如下所示,以防万一:

我想知道在 CAEAGLLayer 的整个生命周期中的某个时刻是否可能会有一些额外的设置,我可能不知道并且可能会通过尝试在 init 中设置 GL 来跳过这些设置?

0 投票
1 回答
728 浏览

ios - 构建基于 OpenGL ES 2.0 着色器的动态过滤器链的最佳方法

我使用的是 iOS 6(如果您愿意的话,我也使用 7)和 GL ES 2.0。CAEAGLLayer 的想法是拥有一个基于着色器的动态过滤器链,用于处理其内容属性并显示最终结果。过滤器可以在链中的任何点添加/删除。

到目前为止,我想出了一个实现,但我想知道是否有更好的方法来解决它。我的实现大致是这样的:

  1. 具体过滤器继承自的基本过滤器类,为它们实现的任何过滤器/成像创建着色器程序(顶点/片段组合)。
  2. 实现过滤器链并添加过滤器的 CAEAGLLayer 子类。高级处理算法是:

    /li>

到目前为止,这种方法似乎有效,但我想知道一些事情:

实现添加/删除过滤器的最佳方法:

添加和删​​除程序似乎是目前最合乎逻辑的方法。然而,这意味着每个插件一个程序,并在渲染时在所有这些程序之间切换。我想知道这些其他方法如何比较:

  1. 附加/分离着色器对并重新链接单个复合程序,而不是添加/删除程序。OpenGL ES 2.0 编程指南说你不能这样做。但是,由于桌面 GL 允许在一个程序中使用多个着色器对象,所以我很好奇如果 ES 支持它是否会是一种更好的方法。
  2. 将过滤器保持为文本格式(它们的代码在除 之外的函数中),而是在每次添加/删除过滤器时将main它们全部编译成一个整体着色器对(当然添加)。main

实现每个过滤器缓存的最佳方法:

现在,在链中的任何点添加/删除任意数量的过滤器都需要再次运行所有程序来渲染最终图像。但是,如果我能以某种方式缓存每个过滤器的输出,那就太好了。这样,删除、添加或绕过过滤器只需要在链中的插入/删除/绕过点运行过滤器。我可以想到一种天真的方法:在每个程序传递中,将不同的纹理对象绑定到帧缓冲区GL_TEXTURE0GL_COLOR_ATTACHMENT0帧缓冲区。通过这种方式,我可以保留每个过滤器的输出。但是,为每个过滤器创建新纹理、绑定和更改帧缓冲区附件似乎效率低下。