2011-02-14 127 views
2

我在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(); 
+0

你使用頂點顏色還是紋理?如果你使用的是紋理,你是如何從存儲中加載圖像的? – genpfault 2011-02-14 22:46:59

+0

@genpfault,只是紋理沒有頂點顏色。我用紋理加載代碼編輯了我的問題。 – Ryan 2011-02-15 21:38:42

回答

2

我懷疑一個字節序的問題是圍繞翻轉你的RGB三胞胎,因爲橙色是RGB(255,165,0),RGB(0,165,255)是藍色。

我會看看你的紋理圖像加載代碼,以確保它在x86和ARM上提供相同的輸出。

相關問題