- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 GLKit 使用 OpenGL ES 2.0 制作一个 iPhone 应用程序。我正在使用 GLKTextureLoader 加载纹理。当我的纹理位于 mainBundle 中时 - 一切正常。我用命令 [[NSBundle mainBundle] pathForResource:@"brushRose.png"ofType:nil]
得到它的名字,纹理有以下路径:
/var/mobile/Containers/Bundle/Application/D79492CB-D03C-464D-B06E-00D0DE4389DF/Texture Test.app/brushRose.png
当我尝试从 Internet 下载完全相同的纹理并将其存储在应用程序的 Documents
文件夹中时。路径如下:
/var/mobile/Containers/Data/Application/CD3FBAAB-B8AE-47F5-9C6E-51C854FC1620/Documents/brushes/ps_roses.png
我得到了一个糟糕的最终结果,可以在下图中观察到: First row - texture from mainBundle, second row - from Documents
欢迎提出任何解决第二种情况的想法。
可以找到测试项目here
最佳答案
当您构建包含 PNG 的应用程序时,Xcode 会对它们运行 pngcrush
,其中包括 pre-multiplies the alpha .
您正在使用的“非主包”文件没有预乘 alpha。这解释了外观上的差异。
您的选择是在您的 url 纹理上运行 pngcrush
,或者停止在您的项目中运行 pngcrush,或者在您加载未压缩的 PNG 时有条件地应用 GLKTextureLoaderApplyPremultiplication
:
NSMutableDictionary *options = [@{ GLKTextureLoaderOriginBottomLeft : @NO} mutableCopy];
if ( /** png is uncrushed **/ ) {
options[GLKTextureLoaderApplyPremultiplication] = @YES;
}
NSError* error;
GLKTextureInfo* texture = [GLKTextureLoader textureWithContentsOfFile:brushPath options:options error:&error];
关于ios - 纹理不在 mainBundle 中的 GLKTextureLoader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34642171/
有没有办法在 OpenGL-ES 中使用巨型图像条加载立方体贴图? (或桌面 GL 或扩展,任何东西) 例如,GLKTextureLoader如果立方体贴图是垂直排序的,则该类提供立即加载立方体贴图的
我正在使用 GLKit 制作一个带有 OpenGL ES 2.0 的 iPhone 应用程序。我正在使用 GLKTextureLoader 同步加载纹理。 问题是对于某个纹理,第一次加载失败。它给出了
从 viewDidLoad 加载纹理工作正常。但是,如果我尝试从 GLKViewController 更新加载它们,我会收到错误消息。我这样做是因为我想在不改变 View 的情况下换入新的背景纹理。
我正在使用 GLKit 使用 OpenGL ES 2.0 制作一个 iPhone 应用程序。我正在使用 GLKTextureLoader 加载纹理。当我的纹理位于 mainBundle 中时 - 一切
iOS 开发的新手,尤其是 iOS 5 上与 OpenGL 相关的新功能,所以如果我的问题很基础,我深表歉意。 我正在开发的应用程序旨在接收相机帧并通过 OpenGL ES 在屏幕上显示它们(图形人员
我正在从 JPG 格式加载非常大的纹理,在 iOS5 之前,我会使用 Apple 示例 Texture2D 类将 JPG 纹理从 RGB888 格式转换为 RGB565 格式,以将所需的内存空间减半。
请问一个关于 iOS 5.0 框架中的 GLKit 的快速问题。 如果您使用 GLKTextureLoader,它是否只加载当前事件纹理单元中的纹理?我查看了示例,但没有看到您必须说变量 x 中的 G
我试图在 GLKit 中创建一个来自网络的六个 jpg 文件的立方体贴图。它在我的 iPhone 6+ 上运行良好,但当我在“新 iPad”上运行相同的代码时,立方体贴图在应用于对象时只是黑色。如果我
我正在使用 GLKTextureLoader 实例异步加载纹理: NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumbe
背景 在我们的应用程序中,我们使用 PNG Sprite 表,其中每个 Sprite 仅用作 mask 。这些已使用 GLKTextureLoader 成功加载。当 iOS 7 到达第 5/6 个 b
我是一名优秀的程序员,十分优秀!