问题标签 [glkit]

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 投票
5 回答
4735 浏览

iphone - GLKView 设置可绘制属性

我正在尝试移植 Apple 的 GLPaint 示例以使用 GLKit。使用 UIView,可以返回视图的 CAEAGLLayer 并将 drawableProperties 设置为包含 kEAGLDrawablePropertyRetainedBacking。正如预期的那样,这具有在呈现渲染缓冲区后保留可绘制内容的效果。删除此属性会导致在绘制调用后闪烁,部分可绘制内容似乎被绘制到不同的缓冲区。

问题是这正是我现在在我的 GLKView 中遇到的问题,但似乎没有办法设置可绘制属性。返回 CAEAGLLayer 并设置属性没有效果,我没有看到 GLKView 的任何相关属性来设置保留的支持。

有没有其他人遇到过这个或有解决方案?

0 投票
2 回答
1652 浏览

ios - 如何使用 GLKit 围绕精灵的中心旋转地图集

我在 GLKit 中有一个跟随用户手指的纹理。我计算弧度以在两点之间使用 arctan 绘制角度。

这里的部分技巧是保持物体居中而不是手指。所以我引入了锚点的概念,以便可以相对于它们的原点或中心绘制事物。我的目标是将精灵移动到位然后旋转。我的渲染器中有以下代码。

另一个注意事项是我的精灵在纹理别名上。如果我拿出我的旋转我的精灵正确地绘制在我的手指下方。我的项目矩阵是 GLKMatrix4MakeOrtho(0, CGRectGetWidth(self.frame), CGRectGetHeight(self.frame), 0, 1, -1); 所以它匹配 UIkit 和它嵌入的视图。

0 投票
0 回答
598 浏览

opengl-es-2.0 - GLKBaseEffect prepareToDraw 性能

我想渲染许多具有相同效果的对象。

所以我改变了变换属性并调用preparetodraw,例如

这是有效的 - 还是有更好的方法?这会导致额外的 glUseProgram 调用等吗?

我有一个我构建的较旧的着色器管理器类,但希望改用 glkit。

在此先感谢您的任何提示...

0 投票
0 回答
342 浏览

ios - GLKit TextureLoader 泄漏和分配

我正在加载大量纹理(每帧更新一个)

- (void)textureWithContentsOfData:(NSData *)data options:(NSDictionary *)textureOperations queue:(dispatch_queue_t)queue completionHandler:(GLKTextureLoaderCallback)block方法。几分钟后,我的应用程序崩溃了,因为我有大量的分配和泄漏 -[GLKShaderBlockNode copywithZone:] 。我不知道如何解决这个问题。在 Apple 变形时,他们说这是一个 GLKit 错误。您是否尝试解决此泄漏和分配问题?

0 投票
2 回答
2710 浏览

opengl-es - 为什么在 ViewDidLoad 中没有设置 GLKView 的 DrawableWidth?

我正在使用 GLKit 的 GLKViewController/GLKView 来做一些基本的 OpenGL 绘图。

我想在 ViewDidLoad 方法中设置 ViewPort。在阅读了 GLKView 参考之后,我想我可以这样做:

问题是DrawableWidthDrawableHeight属性都为零。这是为什么?当 GLKView 调用 DrawInRect 时,它们被设置并且它们的值是我所期望的。

0 投票
2 回答
344 浏览

iphone - 带有 Open GL ES 的 UIKit 粒子系统?

我正在使用 Open GL ES 2.0 和 GLKit 制作 iOS 游戏。是否可以使用新的 iOS 5 UIKit 粒子系统?还是我最好只制作自己的粒子系统?

0 投票
1 回答
585 浏览

ios - 如何使用 GLKit 的 GLKMatrixStack 库生成模型视图矩阵?

GLKit 中有一个带有以下注释的头文件:

GLKMatrixStack 是一种 CFType,它允许创建类似于 OpenGL 的矩阵堆栈的 4x4 矩阵堆栈。可以使用类似于 OpenGL 的固定功能版本中的功能创建和操作任意数量的矩阵堆栈。

您将如何根据堆栈的内容生成模型视图矩阵?我在标题GLKMatrixStackRef之外找不到任何对类型的引用。GLKMatrixStack

0 投票
1 回答
3006 浏览

ios - glkView:drawInRect: 和 glkViewControllerUpdate: 之间的区别?OpenGL ES 2 - iOS

在我的渲染循环中,这两种方法之间应该有什么区别,目的明智?

苹果有话要说……

关于 update() 视图控制器调用其委托的 glkViewControllerUpdate: 方法。您的委托应更新不涉及将结果呈现到屏幕的帧数据。

关于 drawInRect: GLKView 对象使其 OpenGL ES 上下文成为当前上下文,并将其帧缓冲区绑定为 OpenGL ES 渲染命令的目标。然后,您的委托方法应该绘制视图的内容。

所以基本上,当我在我的视图控制器中创建一个 GLKView 时,那个控制器就变成了延迟,所以我正在并排查看这些方法。

我假设 update() 应该包含任何转换或其他逻辑。

0 投票
3 回答
2870 浏览

c - GLKit 的 GLKMatrix “列专业”如何?

前提A

在讨论线性内存中的“主要列”矩阵时,列是一个接一个地指定的,这样内存中的前 4 个条目对应于矩阵中的第一列。另一方面,“主要行”矩阵被理解为一个接一个地指定行,以便内存中的前 4 个条目指定矩阵的第一行。


AGLKMatrix4看起来像这样:

该成员的文档m说:

以列优先顺序排列的矩阵元素的一维数组。

前提B

GLKMatrix4 中的“行”是一组水平声明的 4 个浮点数([m00, m01, m02, m03]将是第一个“行”)。因此,这些条目可以解释为 mRowCol(m12将是第 1 行第 2 列的条目)。


如果我们根据声明的顺序查看这些 GLKMatrix 结构成员的布局,我们会看到:

[m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, ...]

其中前 4 个条目清楚地表示矩阵的第一,而不是第一列。

结论

m实际上不是 Column Major,并且文档是错误的。


现在,我应该指出,我实际上并不相信这个结论,但这两个前提似乎很合理。真的,我最不信任前提 B,但是将“行”定义为垂直而“列”定义为水平似乎很奇怪。有人可以解释一下吗?

0 投票
1 回答
8822 浏览

ios - 将 GLKView 嵌套到 UIViewController

我正在尝试在 UIViewController 中使用 GLKView,我的代码如下所示

自定义视图控制器.h

自定义视图控制器.m

如何定义 GLKView 的绘制/渲染方法?我在哪里可以初始化 OpenGL?有什么建议么?