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

iphone - IOS:UIScrollView 和 OpenGL

所以我有一个 OpenGL(glView) 视图,它正在渲染一个我打算滚动的菜单。我试图避免重新发明 UIScrollView,所以我在 glView 顶部放置了一个滚动视图。

问题是滚动滚动视图会暂停渲染

此处讨论了一个类似的问题Animation in OpenGL ES view freezes when UIScrollView is dragged on iPhone

问题是我不知道什么 [displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; 指

我制作了一个新的 CADisplayLink 并尝试在没有运气的情况下执行上述操作

我尝试在 scrollViewDidScroll 中调用渲染方法

我试过打电话 [self.view setNeedsDisplay];

我还发现了一个提到调用 timerLoop?

谁能帮帮我

0 投票
2 回答
1789 浏览

ios - 如何使用 GLKMathUnproject

我使用 GLKit 创建了一个简单的 3D 世界。我正在尝试根据屏幕点击在我的 3D 世界中找到一个特定点。看来我想使用 GLKMathUnproject。该方法的签名是:

有些事情让我对它所需的参数感到困惑。首先窗口坐标不应该是 GLKVector2 吗?最重要的是,不会将屏幕上的点投影到 3D 空间中创建射线而不是单个点。当您将 3D 空间中的点投影到 2D 平面(也称为屏幕)上时,您会丢失有关该点的一维信息。那么如何将 2D 屏幕点转换为 3D 世界点而不指定您希望将点“取消投影”到什么深度?互联网上的任何地方都绝对没有评论这种方法(除了苹果文档)。

0 投票
1 回答
2163 浏览

ios - 在我的纹理上绘制形状时,OpenGL 使我的纹理半透明

概述

我正在尝试通过组合一些图像和渐变在我的游戏中构建图形。我开始使用 Core Graphics,它工作得非常好,但速度非常慢。我现在尝试使用 GLKit 将其移植到 OpenGL,我非常接近,但还有最后一个问题:

我已经在屏幕上将纹理绘制成三角形。现在,在它的顶部,我想画一个渐变。要绘制渐变,我认为最简单的方法是在其中两个顶点绘制黑色,在第三个顶点绘制完全透明(alpha=0)颜色的三角形。渐变本身渲染得很好,但是当它渲染到纹理的顶部时,它看起来好像纹理的 alpha 也受到影响,并导致背景显示出来。

我想要的是:

在此处输入图像描述

我得到的是:

在此处输入图像描述

我承认我对 OpenGL 或 GLKit 不太熟悉。我怀疑三角形上每个点的纹理 alpha 是(1 - 渐变 alpha),这可以解释为什么纹理在角落是完全不透明的,以及为什么纹理和渐变似乎在中间都有部分透明度。

我可以用 GLKit 完成我想要的吗?它甚至与 GLKit 和 GLKBaseEffect 相关,还是我只是在 OpenGL 中做一些我可以关闭的时髦的多纹理操作?

代码片段

我的精灵类中的渲染函数,用于绘制纹理:

在我的形状类中渲染函数,用于绘制带渐变的三角形:

在此先感谢您的帮助!

编辑:看起来 glBlendFunc(...) 可能包含我的答案。但我不明白不同的模式。我在正确的轨道上吗?

编辑:仍然没有解决方案,但我已经更新了我在问题中的假设。

0 投票
0 回答
843 浏览

iphone - 我应该使用 glkit 还是 cocos3d?

我已准备好使用 3D 编写我的第二个应用程序。第一个应用程序于 2011 年 4 月完成。我想再写一个,并且一直在研究最佳路线。上次我使用了 opengl-es,这很困难,但我通过了它,并且该应用程序在 3D 方面非常复杂。

这一次,我正在查看 glkit,发现这会将设备限制为使用 IOS 5 的设备。不确定使用 glkit 有哪些其他优点/缺点。Cocos3d 也可以,但我真的找不到任何人比较这两种功能。

我将使用 modo 创建我的 3D 网格,但我也可以使用 Max 或 Maya。从 3D 应用程序中,我将导出一个 collada 文件,然后将其转换为 POD。该应用程序将允许用户旋转模型,并选择(点击)模型的不同部分以更改该 3D 部分的颜色。

谁能比较和对比这两种技术,或者让我知道我是否走在正确的轨道上?

0 投票
2 回答
1349 浏览

iphone - GLKBaseEffect prepareToDraw 正在泄漏

似乎每个人都同意这是坏的,你需要摆脱 GLKBaseEffect 以阻止它泄漏。但是没有人提到你会用什么来代替它。

有人可以指出我正确的方向吗?一些示例代码或教程将非常有用!

我正在做非常基本的事情,只是绘制 2D 精灵。除了所有泄漏之外,效果很好:p

我只需要知道 prepareToDraw 正在做什么,并用一些有效的代码替换它。我发现的所有教程似乎都专注于 3D 渲染......

我可以使用 OpenGL ES1 而不是 2 吗?

0 投票
1 回答
574 浏览

ios - IOS GLKit:渲染循环停止

奇怪的问题,我做了这个原型项目,它是一个 GLKit 渲染,顶部有一个 UIScrollview 来移动渲染的对象。必须使用 CADisplayLink 等使其正常工作,因为滚动会停止渲染。一切都很好!

然后我将这些类复制到另一个项目中并启动它,一切似乎都工作正常,除了它不是每秒 x 次启动渲染循环。一次(直到滚动视图调用它)。

什么可以阻止自动调用下面的方法?

0 投票
1 回答
665 浏览

ios - IOS GLKit:图灵 GLKViewDrawableMultisample4X 停止对象拾取

我正在使用像素颜色拾取来计算我单击了哪个 OpenGL 对象,并且效果非常好

在视图中打开 GLKViewDrawableMultisample4X 后,拾取停止工作?

我尝试在触摸屏幕时打开和关闭它,但只能工作一次。

拣货代码:

0 投票
1 回答
365 浏览

ios - UIScrollView 与 OpenGL GLKit 对齐

这是一个有点有趣的事情。

所以我有一个顶部有滚动视图的 OpenGL 屏幕。我滚动时使用 CADisplay 链接更新渲染(下面的代码),效果非常好。

但是,我无法让它捕捉到一个点(动画)。我相信 CADisplay 链接的释放会停止滚动视图的动画(参见 snapToItem)。

我尝试在 2 秒后释放 CADisplay,但这会导致其他问题。

0 投票
1 回答
381 浏览

uinavigationcontroller - IOS:CADisplay / UIScrollview 和导航控制器

所以我已经设法让我可爱的 ​​GLKit 3D 菜单与 UIScrollview 一起工作,并且生活很好,直到我推到另一个视图控制器并回来。

所以完全平滑的运动,移动到下一个控制器并回来。UIScrollview 不能很好地反弹或流动?

每次滚动视图移动和停止时,CADisplay Link 都会初始化并且为零,这似乎工作正常,直到我推送到另一个控制器并返回。

随机地,如果我单击一个导致滚动视图移动并触发所有代码的项目,它就会重新启动。可悲的是,如果我尝试在视图上触发它确实出现它不会做同样的事情。

0 投票
2 回答
3209 浏览

ios - cicontext drawImage:inRect:fromRect 在 ios6 中崩溃

我正在尝试从相机获取视频并使用 CoreImage 和 OpenGL 进行渲染。当我运行它时,我会按预期在屏幕上看到我的图片,然后我得到 EXEC_BAD_ACCESS。我正在使用ARC。iOS6 Beta1。请帮我修复它。

更新:它在 5.1 中工作,但在 6.0 中崩溃。我提出了所有异常断点,但我只看到 EXEC_BAD_ACESS 发生在 presentRendedBuffer > gpus_ReturnGuiltyForHardwareRestart

Update2:我已经删除了与相机相关的代码,但它仍然崩溃。

更新 3:当我注释掉 glClearColor 和 glClear 命令时,我的应用程序停止崩溃。但我仍然想知道如何同时使用 OpenGL 和 Core Image。

我的新代码很简单:

此代码适用于 iPhone & iPad 6.0 模拟器;在 iPad2 iOS 6.0 Beta2 上使用 EXEC_BAD_ACCESS 崩溃;它在 iPad 1 和 iPhone 4S iOS 5.1.1 上给了我绿屏,并在控制台中显示消息:

有什么问题?