Iphone OpenGL ES 1.1:设备上的纹理与模拟器颜色不同
问题描述:
我在iphone上渲染了opengl es 1.1中的橙色南瓜。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上提供相同的输出。
你使用顶点颜色还是纹理?如果你使用的是纹理,你是如何从存储中加载图像的? – genpfault 2011-02-14 22:46:59
@genpfault,只是纹理没有顶点颜色。我用纹理加载代码编辑了我的问题。 – Ryan 2011-02-15 21:38:42