Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检测早于3GS的iPhone硬件_Iphone_Objective C - Fatal编程技术网

检测早于3GS的iPhone硬件

检测早于3GS的iPhone硬件,iphone,objective-c,Iphone,Objective C,我有一个渲染密集型游戏,使用png在3G手机上运行太慢了。但是它使用pvrtc运行得很快,所以我需要知道我运行的是什么型号 问题:如何检测正在运行的硬件 非常感谢你的帮助 仅为ARM v7编译,3G之后的所有iPhone都是ARM v7 这就是layar应用程序的功能 如果您想检测较旧的硬件,则更容易,因为您正在创建一个fat二进制文件(支持ARMv6和ARMv7)。 ARMv有一个定义&,只是现在找不到它。 这样,您就不必在运行时循环该类型,只需为ARMv6和ARMv7创建一个fat二进制文件

我有一个渲染密集型游戏,使用png在3G手机上运行太慢了。但是它使用pvrtc运行得很快,所以我需要知道我运行的是什么型号

问题:如何检测正在运行的硬件


非常感谢你的帮助

仅为ARM v7编译,3G之后的所有iPhone都是ARM v7

这就是layar应用程序的功能

如果您想检测较旧的硬件,则更容易,因为您正在创建一个fat二进制文件(支持ARMv6和ARMv7)。 ARMv有一个定义&,只是现在找不到它。 这样,您就不必在运行时循环该类型,只需为ARMv6和ARMv7创建一个fat二进制文件 然后使用一个宏为ARMv添加优化&使用#if armv7宏

你可以用Erica Sadun的

参见我的,核心是以下方法:

- (NSString*) platformID
{
    size_t size;
    sysctlbyname("hw.machine", NULL, &size, NULL, 0);
    char *machine = malloc(size);
    sysctlbyname("hw.machine", machine, &size, NULL, 0);
    NSString *platform = [NSString stringWithUTF8String:machine];
    free(machine);
    return platform;
}

您还可以为armv6版本禁用Thumb。这将加快旧款游戏的速度。不过,对于armv7体系结构,您应该启用Thumb。

您可能真正感兴趣的是,您使用的是PowerVR MBX硬件(如3G、原装iPhone、第一代和第二代iPod Touchs以及低端第三代iPod)还是PowerVR SGX硬件(与3GS和iphone4一样,ipad和ipodtouch都不在上述列表中)

考虑到这一点,我们就:

EAGLContext *testContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];

BOOL isSGX = testContext ? YES : NO;
[testContext release];

return isSGX;

SGX是一个可编程部件,可以支持ES 2,MBX不是。MBX也限制为16mb的VRAM,而SGX不是,这可能就是为什么你的应用程序在全脂纹理上运行不佳,但在pvrtc上运行良好的原因。

如果我正确理解这个问题,他不想锁定较旧的设备,他想更改实现根据硬件。您可以使用
info.plist
中的“UIRequiredDeviceCapabilities”键来设置
armv7
要求。@Deepak:这不是OP想要的。是的,不是。这将使应用程序对旧设备不可用。这将是最好的解决方案(如果可行的话)。最好检查您需要的特定功能,而不是检查硬件型号。这正是我需要的!我喜欢人们知道他们在做什么!谢谢!