Iphone OpenGL ES 1.1: текстура на устройстве отличается от цвета симулятора - PullRequest
2 голосов
/ 14 февраля 2011

Я рендую оранжевую тыкву в opengl es 1.1 на iphone.

В симуляторе тыква отрисовывается, как и ожидалось - это правильный оранжевый цвет.

Когда я тестирую наустройство тыква становится синим.

Что вызывает это и как я могу это исправить?

спасибо

изменить, вот мой код загрузки текстуры:

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 Ответ

2 голосов
/ 15 февраля 2011

Я подозреваю, что проблема с порядком байтов заключается в переворачивании ваших триплетов RGB, поскольку оранжевый - это RGB (255,165,0), а RGB (0,165,255) довольно синий.убедитесь, что он дает одинаковый вывод на x86 и ARM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...