问题标签 [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.
ios - GLKTextureLoader 加载 PVR 失败(错误 12 - 预处理失败)
背景
在我们的应用程序中,我们使用 PNG 精灵表,其中每个精灵仅用作蒙版。这些是使用成功加载的GLKTextureLoader
。当 iOS 7 达到第 5/6 个 beta 时,GLKTextureLoader
工作方式似乎发生了一些变化,因为突然我们所有的 PNG 都开始不正确地渲染,就好像 alpha 预乘有问题一样。
在提交错误报告后,没有收到 Apple 的回复(令人担忧的是,问题仍然存在于 iOS 7 的实时版本中),我们决定将我们的 PNG 转换为 PVR 格式。
问题
尝试使用以下方式加载 PVR 纹理时GLKTextureLoader
:
它失败并出现错误 12 ( GLKTextureLoaderErrorDataPreprocessingFailure
)。这个“预处理”步骤涉及什么,可能是什么问题?
以下是我检查过的一些事情:
- 网址有效
- 文件扩展名为
.pvr
- 图像具有方形 POT 尺寸 (512x512)
- 我尝试了多种 PVR 格式,包括压缩和未压缩(PVRTC 4bpp、RGBA8888、L8、A8)
- 我在 之前和之后放置了 glErrorChecks
textureWithContentsOfURL:options:error:
,但没有记录任何内容(可能GLKTextureLoader
正在消耗 GL 错误,或者该错误与 OpenGL 无关)
此答案表明这可能是由文件损坏引起的。这让我想知道我是否以某种方式错误地生成了 PVR。我正在使用 Imagination 的 PVRTexToolGUI 来转换 PNG:
- 在 PVRtexToolGUI 中打开 PNG
- 预乘 alpha(尽管我也尝试过没有这一步)
- 将当前纹理编码为新格式(已尝试多种格式,如上所述)
- 将纹理另存为 .pvr 文件。
ios - GLKTextureLoader 内存指针
根据网上的很多文章,我正在使用 GLKTextureLoader 加载纹理图集 [XCode 5.1.1,IOS 6.1],因此:
我已经搜索和搜索,但无法找到如何获取指向实际像素数据的指针。我想使用 glReadPixels 覆盖屏幕外帧缓冲区中的一些像素数据。
最大限度
ios - GLKTextureLoader 只能加载一个纹理
我在通过加载纹理方法加载纹理时遇到问题。
我第一次调用加载纹理方法一切都很好,但是任何后续调用加载纹理的纹理信息都无法初始化,并且 NSLog 显示“宽度:0 高度:0 数据:0x0”