【问题标题】:Non power of two textures in iOSiOS中两个纹理的非幂
【发布时间】:2012-06-17 06:45:09
【问题描述】:

在我的 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);

我应该关闭它还是回答我自己的问题?

【问题讨论】:

  • 无需关闭问题,您只需撰写答案并接受即可。有一天它可能会对其他人有所帮助。
  • 我记得几天前同样的问题和答案。这是一个常见的话题。

标签: ios opengl-es


【解决方案1】:

正如我在编辑中提到的,我找到了解决方案。 ES 2.0 上的 NPOT 要求您使用线性过滤并钳制到边缘。此外,没有 mipmap。

【讨论】:

  • 还要检查GL_APPLE_texture_2D_limited_npot 扩展以确保它受支持。
  • 它与 GL_NEAREST 一起作为我在 ios7 上的 min/mag 过滤器工作。 GL_CLAMP_TO_EDGE 是问题所在。
  • @Martin 你能分享一个关于如何在 iOS 下绘制非幂的两个纹理的 sn-p 吗?我正在尝试这样做,但我只能显示白色图像:gist.github.com/anonymous/53307d146d3d1a750554
【解决方案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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多