如何以编程方式获取最大纹理尺寸(宽度和高度)

lok*_*oki 5 textures ios swift metal metalkit

如何以编程方式获取金属的最大纹理尺寸(宽度和高度)?使用 openGL 我可以做到:glGetIntegerv(GL_MAX_TEXTURE_SIZE, ...)但是如何使用 Metal 做到这一点?

war*_*enm 6

目前没有用于检索 Metal 设备的最大纹理尺寸的 API。您应该查阅金属功能集表以获取此信息,并将其包含在您的应用程序中。

\n\n

对于运行当前版本的 iOS/tvOS/iPadOS 的 A9 和更新的 GPU,2D 纹理的最大大小为 16384\xc3\x9716384。

\n


cod*_*ger 3

正如@warrenm 所提到的,以编程方式不可能获得设备支持的最大纹理大小。但是,下面的代码将根据设备类型为您提供硬编码的大小。

int maxTexSize = 4096;

if ([mtldevice supportsFeatureSet:MTLFeatureSet_iOS_GPUFamily4_v1] || [mtldevice supportsFeatureSet:MTLFeatureSet_iOS_GPUFamily3_v1]) {
    maxTexSize = 16384;
else if ([mtldevice supportsFeatureSet:MTLFeatureSet_iOS_GPUFamily2_v2] || [mtldevice supportsFeatureSet:MTLFeatureSet_iOS_GPUFamily1_v2]) {
    maxTexSize = 8192;
} else {
    maxTexSize = 4096;
}
Run Code Online (Sandbox Code Playgroud)