【问题标题】:Texture2D text color changed after updating from iOS 3.0 to 4.0从 iOS 3.0 更新到 4.0 后 Texture2D 文本颜色发生了变化
【发布时间】:2011-03-11 18:11:58
【问题描述】:

我正在使用 OpenGL Texture2D 类和 initWithString 方法向用户显示字符串。当使用 iOS 3.0 和 XCode 3.1.3 运行时,所有文本在模拟器中显示为黑色,在手机中显示为白色。更新到 iOS 4.0、XCode 3.2.3 和 iPhone SDK 4.0 后,手机上的文字显示为黑色!不太好,因为我的应用程序几乎完成了,并且艺术品是围绕白色文本设计的。我该如何解决这个问题?

更多信息:我正在使用 3G 手机进行测试。 texture2D 类也来自 Crashlanding。

【问题讨论】:

  • 文本在基于 SGX 的设备(例如 iPhone 3GS、第三代 iPod touch)上显示为什么颜色?另外,您是使用标准纹理环境模式还是配置自己的自定义纹理组合器状态?
  • 我只在3G上测试过。我不确定您的第二个问题(OpenGL ES 和 OpenGL 的新手)。

标签: iphone xcode opengl-es texture2d


【解决方案1】:

好的,我通过this blog (majicjungle.com) 提供的一些 真棒 帮助找到了解决方案。基本上我修改了 Texture2D 类的 initWithString 方法,如链接教程的前几个步骤中所述。

以下是我所做的修改:

1) 用这四行替换了 initWithString 中的四行:

colorSpace = CGColorSpaceCreateDeviceRGB();
data = calloc(1, width * height * 4);
context = CGBitmapContextCreate(data, width, height, 8, width * 4, colorSpace,          kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
CGColorSpaceRelease(colorSpace);

2) 替换 kTexture2DPixelFormat_A8 和 kTexture2DPixelFormat_RGBA8888 在对 initWithData 的调用中

3) 已更改 CGContextSetGrayFillColor(上下文, 1.0, 1.0); 到 CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0);

CGContextSetRGBFillColor 的第 2-4 个参数是 RGB 值。将它们全部设为 1.0 会产生所需的白色字体颜色。

我绝对建议阅读这篇博文……这很有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 2013-09-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多