iPhone OpenGL ES 1.1 : texture is different color on device than simulator

标签 iphone opengl-es

我正在 iPhone 上使用 opengl es 1.1 渲染橙色南瓜。

在模拟器中,南瓜按预期渲染 - 它是正确的橙色。

当我在设备上测试时,南瓜变成蓝色。

造成这种情况的原因是什么以及如何解决它?

谢谢

编辑,这是我的纹理加载代码:

void LoadPngImage(const std::string& filename) {
    NSString* basePath = [NSString stringWithUTF8String:filename.c_str()];
    NSString* resourcePath = [[NSBundle mainBundle] resourcePath];
    NSString* fullPath = [resourcePath  stringByAppendingPathComponent:basePath];
    UIImage* uiImage = [UIImage imageWithContentsOfFile:fullPath];
    CGImageRef cgImage = uiImage.CGImage;
    m_imageSize.x = CGImageGetWidth(cgImage);
    m_imageSize.y = CGImageGetHeight(cgImage);
    m_imageData = CGDataProviderCopyData(CGImageGetDataProvider(cgImage));
}

void* GetImageData() {
    return (void*)CFDataGetBytePtr(m_imageData);
}

编辑,添加更多代码:

glGenTextures(1, &m_texture);
glBindTexture(GL_TEXTURE_2D, m_texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

m_resourceManager->LoadPngImage("Pumpkin64.png");
void* pixels = m_resourceManager->GetImageData();
ivec2 size = m_resourceManager->GetImageSize();
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, size.x, size.y, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels);
m_resourceManager->UnloadImage();

最佳答案

我怀疑字节顺序问题是翻转你的 RGB 三元组,因为橙色是 RGB(255,165,0),而 RGB(0,165,255) 是蓝色。

我会查看您的纹理图像加载代码,以确保它在 x86 和 ARM 上提供相同的输出。

关于iPhone OpenGL ES 1.1 : texture is different color on device than simulator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4988178/

相关文章:

iphone - super View 如何在其任何 subview 之前拦截触摸序列?

iphone - 尝试使用帧缓冲区渲染纹理总是会导致白色纹理

objective-c - iPad 应用更新到 iOS4 SDK 后只显示黑屏

iphone - Cocos2D-iPhone 中的多线程 OpenGL 编程

javascript - 从深度重建片段位置

android - 用于 2D 图形的 OpenGL ES 1.1 与 2.0,具有旋转的 Sprite ?

ios - 用设备相机输出填充 UILabel 内容

iphone - 通过触摸在贝塞尔曲线路径上旋转 Sprite - Cocos2D/Box2D

iPhone 上未显示 Python smtplib.sendmail Mime Multipart 正文

ios - 尝试呈现已经呈现