Не мощь двух текстур в iOS

В моем iOS-приложении (предназначенном для iPad) я хотел бы использовать текстуры двух степеней (NPT). Мой запрос GL_VERSION возвращает "OpenGL ES 2.0 APPLE". Согласно спецификации, он должен поддерживать текстуры NPT, но простой тест показывает, что мне нужно изменить текстуру до 2 ^ N, прежде чем она появится.

Apple не поддерживает полную спецификацию ES 2.0? Где я могу найти документацию о том, что не поддерживается?

Я использую Xcode 4.3.2 и iOS 5.1.

Редактировать:

Более внимательное изучение спецификации ES 2.0.25 (раздел 3.8.2) показывает, что для работы NPOT необходимо выполнить несколько условий. По сути, если я использую настройки ниже, я могу загружать текстуры NPOT:

// use linear filetring
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
// clamp to edge
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

Должен ли я закрыть это или ответить на свой вопрос?

 Tim17 июн. 2012 г., 10:10
Не нужно закрывать вопрос, вы можете просто составить ответ и принять его. Это может потенциально быть полезным для кого-то еще однажды.
 Luca17 июн. 2012 г., 15:29
Я помню тот же вопрос и отвечу несколько дней назад. Это частая тема.

Ответы на вопрос(2)

- (BOOL)isSupportNPOT {
//    GL_OES_texture_npot
//    GL_APPLE_texture_2D_limited_npot
//    GL_ARB_texture_non_power_of_two
    EAGLContext *context_ = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
    [EAGLContext setCurrentContext:context_];
    NSArray *extensionNames = nil;
    NSString *extensionsString = [NSString stringWithCString:(const char *)glGetString(GL_EXTENSIONS) encoding:NSASCIIStringEncoding];
    extensionNames = [extensionsString componentsSeparatedByString:@" "];
    BOOL isSupport = [extensionNames containsObject:@"GL_APPLE_texture_2D_limited_npot"];
    [EAGLContext setCurrentContext:nil];
    NSLog(@"Apple Opengl support NPOT is %@", isSupport ? @"YES" : @"NO");
    return isSupport;
}
Решение Вопроса

Как уже упоминалось в моей редакции, я нашел решение. NPOT на ES 2.0 требует, чтобы вы использовали линейную фильтрацию и зажимали края. Также нет мипмапов.

 19 мая 2014 г., 14:31
Он работает с GL_NEAREST в качестве фильтра min / mag для меня на ios7. GL_CLAMP_TO_EDGE была проблема.
 27 авг. 2014 г., 15:32
@Martin Не могли бы вы поделиться фрагментом о том, как рисовать не-две текстуры под iOS? Я пытаюсь это сделать, но могу отобразить только белое изображение:gist.github.com/anonymous/53307d146d3d1a750554
 02 авг. 2012 г., 08:38
Также проверьтеGL_APPLE_texture_2D_limited_npot расширение, чтобы убедиться, что оно поддерживается.

Ваш ответ на вопрос