问题标签 [glktextureloader]

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

ios - GLKTextureLoader -textureWithCGImage:options:queue:completionHandler: malloc 错误

我正在使用一个GLKTextureLoader实例来异步加载纹理:

第一次运行此代码时,它运行良好。但是第二次,我在控制台中收到malloc: *** error for object 0xa0cb3c0: pointer being freed was not allocated警告。回溯似乎表明错误发生在GLKTextureLoader自己的工作线程中:

显然,纹理加载器似乎过度释放了一些东西。我在这里做错了什么?


更新:

传递给该方法的图像是这样获得的:

将图像生成更改为此阻止了错误的发生:

所以现在我想问题是为什么?我知道这+imageNamed:包括一些缓存行为,但是为什么会影响这段代码呢?


更新 2:

使用创建图像时也是如此[UIImage imageWithData:imageData](发生崩溃)。似乎唯一[UIImage imageNamed:imageName]的工作。任何想法为什么?

0 投票
1 回答
369 浏览

objective-c - glColor4f 使用 GLKTextureLoader 停止加载纹理

我目前在新 iPad 上的 GLKView 下使用 OpenGL ES 2.0。似乎,每当我调用 glColor4f 时,除了导致 GL_INVALID_OPERATION 错误之外,什么都没有发生(即它不会为我想要的多边形着色)。然后,一旦我尝试加载纹理,就会收到以下错误消息: Error loading file: The operation couldn't be completed. (GLKTextureLoaderErrorDomain error 8.)

但在调用 glColor4f 之前,一切正常。下面是我的 drawInRect 代码:

如果有人可以提供帮助,我将不胜感激。不过有些事情要指出。我尝试着色的对象存储在 VBO 中,并且呈现为白色(即使我尝试将其着色为红色)。

谢谢

0 投票
1 回答
613 浏览

ios - GLKTextureLoader 如何从图像条加载立方体贴图?

有没有办法在 OpenGL-ES 中使用巨型图像条加载立方体贴图?(或桌面 GL 或扩展,任何东西)

例如,GLKTextureLoader如果垂直排序,类会立即加载立方体贴图。我想知道这个特性有一些 GL 函数,或者这个类在加载时只是分割纹理。当然,我可以使用这个类,但我想知道在加载长图像提示或为每侧分隔 6 个图像之间哪个更有效。

0 投票
2 回答
1261 浏览

ios - GLKBaseEffect 未加载纹理(纹理在对象上显示为黑色)

我在 OpenGL 项目中使用 GLKit。一切都基于 GLKView 和 GLKBaseEffect(没有自定义着色器)。在我的项目中,我有几个具有 GLKViews 用于显示 3D 对象的视图,有时其中几个视图可以一次“打开”(即在模态视图堆栈中)。

虽然到目前为止一切都很好,但在我创建的新视图中,我需要一个带有纹理的矩形来模拟我的应用程序的 3D 世界的卷尺。出于某种未知原因,仅在该视图中,纹理没有直接加载到 opengl 上下文中:纹理由 GLKTextureLoader 正确加载,但是在绘制矩形时是黑色的,并且在调试中查看 OpenGL 框架,我可以看到加载了一个空纹理(有对纹理的引用,但它全部归零或为空)。

我正在绘制的形状定义为:(它最初是一个三角形条,但我切换为三角形以确保它不是问题)

我将效果变量设置为:

渲染循环是:

我还用其他对象在另一个视图中测试了纹理本身,它工作正常,所以这不是纹理文件错误。

任何帮助将不胜感激,因为我在这个问题上停留了超过 3 天。

更新:此外,渲染循环期间没有 glErrors。

0 投票
0 回答
268 浏览

ios - 如何使用 GLKTextureLoader 从照片卷中以正确的方向加载纵向图像?

我正在使用 GLKTextureLoader 从照片卷中加载图像,但是任何时候加载以纵向纵横比拍摄的图像时,它最终都会被视为横向纵横比图像,旋转 90 度。

我相信照片卷中的 UIImage 需要使用 Quartz 进行旋转和重绘,但我真的不知道从哪里开始。我想我可能能够修改流行的 UIImage+Resize.h 库,但是当我尝试加载一个使用该库简单调整大小的 UIImage 时,GLKTextureLoader 失败,提示我它所依赖的一些信息丢失了过程。

0 投票
1 回答
703 浏览

textures - GLKTextureLoader 意外加载透明纹理

UIKit我使用(简化)将文本生成为图像:

GLKTextureLoader然后我将它保存到缓存目录并使用(-textureWithContentsOfFile:options:error:; options = nil)从文件中加载。

加载后,我看到“白色伪影” - 文本周围的白色像素,尤其是在光线不直时可见(对纹理表面应用一些旋转)。

我检查了生成的图像 - 在图像编辑器中打开它们并添加了黑色背景 - 除了黑色之外,我看不到任何东西。然后我检查了纹理 - 在文本后面添加了一个纹理 - 只是用黑色填充。在我的 3D 对象上,我看到文本字母周围的“白色阴影”,比如一些边框。

如果我在启用的情况下加载纹理GLKTextureLoaderApplyPremultiplication,问题就解决了,但文本看起来不太清晰(比如没有使用 100% 黑色)。

envMode将底部纹理 (2d0)更改为GLKTextureEnvModeReplace也将修复白色像素,但会移除光线。

我究竟做错了什么?

更新:

我最近编写了自己的着色器。纹理没有问题,加载时没有 alpha 预乘。所以,我预计 GLKit 着色器本身会出现问题。

0 投票
1 回答
691 浏览

ios - 使用 GLKTextureLoader 和 imageNamed 的问题:多次加载同一图像时

当我使用以下代码多次加载图像时,我得到了奇怪的行为:

当我第一次运行加载图像时,它按预期工作,但是当我尝试再次加载相同的图像时,它被颠倒了。

我认为这与由于使用 imageNamed: 而实际上传递给纹理加载器的 CGImage 相同的事实有关。因此,翻转变换在同一图像上再次应用。

有没有办法解决这个问题?

0 投票
1 回答
221 浏览

iphone - 使用 GLKTextureLoader 加载纹理图集

我似乎有点受 openGLs GLKTextureLoader 的限制。我正在尝试使精灵动画正常工作,因此我正在尝试加载纹理图集。纹理加载器似乎不允许我将图像分解成碎片。

这是相关代码

有什么想法吗?

0 投票
0 回答
2162 浏览

ios - Conversion of CIImage to CGImageRef which could be used to create a GLK texture

I have a CIImage which is the result/output image of a CIFilter. Now I want to create a texture of that image using GLKTextureLoader. I am using the following function which requires a CGImageRef to achieve that.

So the question is, what is the best way to convert a CIImage to CGImageRef which could be used by GLKTextureLoader?

I tried the following method but it failed:

fullscreenCI is the outputImage of a CIFilter.

The above method gives the following error:

error in creating GLK texture : Error Domain=GLKTextureLoaderErrorDomain Code=12 "The operation couldn’t be completed. (GLKTextureLoaderErrorDomain error 12.)" UserInfo=0x1438a880 {GLKTextureLoaderErrorKey=Image decoding failed}

I figured out it could be because of some colorspace issue and tried the following method:

Now the above method works fine! But I want to know if there is any better way to convert the CIImage to CGImageRef without having to use UIImagePNGRepresentation.

0 投票
1 回答
530 浏览

glkit - 如何使用 GLKTextureLoader 从 web url 加载立方体贴图

不确定如何使用从网络加载的图像作为 GLKit 天空盒中的资产(如旧的苹果/谷歌地图街景) 使用 GLKTextureLoader 加载立方体贴图有两种方法:cubeMapWithContentsOfFilecubeMapWithContentsOfUrl

如果我在本地抓取图像,它可以正常工作:

那么有没有办法从从网络加载的图像中获取路径并在这里使用它?