Iphone OpenGL ES 1.1:设备上的纹理颜色与模拟器不同

时间:2011-02-14 01:44:39

标签: 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();

1 个答案:

答案 0 :(得分:2)

我怀疑结束问题是翻转RGB三联体,因为橙色是RGB(255,165,0)而RGB(0,165,255)则是蓝色。

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