【问题标题】:How to detect maximum texture resolution on iPhone?如何检测 iPhone 上的最大纹理分辨率?
【发布时间】:2011-03-15 12:20:51
【问题描述】:

我正在制作一个通用的基于 openGL 的应用程序,它应该可以在 ipod/iphone 2G/3G/3GS/4 和 iPad 上运行。

为了提供最好的图形,我需要根据运行它的设备在不同的纹理分辨率之间切换。

例如,iPhone 2G 需要不大于 1024x1024 的纹理,而 iPhone 3GS 可以处理更大的纹理。

所以,在 iPhone 3GS 上,我想加载一个 2048x2048 的纹理图集,而 iPhone 2G 将获得缩小后的 1024x1024 纹理图集。

是否有一种简单且安全的方法来检测任何上述设备上可用于 openGL 的最大纹理分辨率?

【问题讨论】:

    标签: iphone opengl-es


    【解决方案1】:

    是的,像这样使用 glGetIntegerv:

    int maxTextureSize;
    glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxTextureSize);
    

    那么你最多可以使用一个 maxTextureSize x maxTextureSize 纹理。

    【讨论】:

    • 这对我不起作用。 glGetIntegerv 没有修改 maxTextureSize 的值,glError 返回 0。我错过了什么吗?
    • @louissmr 你需要设置 eaglContext: [EAGLContext setCurrentContext:[[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]];
    • 有什么我必须导入才能使用这个
    猜你喜欢
    • 2011-09-12
    • 1970-01-01
    • 2011-12-14
    • 2020-06-16
    • 2018-08-05
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    相关资源
    最近更新 更多