2014-10-25 2 views
4

По-видимому, я единственный, кто попытается это сделать, так как ни один из моих поисковых запросов Google не оказался полезным. Предположим, что я инициализирую массив атрибутов следующим образом:Инициализация NSOpenGLPixelFormat в Swift

let glPFAttributes = [ 
    NSOpenGLPFAAccelerated, 
    NSOpenGLPFADoubleBuffer, 
    NSOpenGLPFAColorSize, 48, 
    NSOpenGLPFAAlphaSize, 16, 
    NSOpenGLPFAMultisample, 
    NSOpenGLPFASampleBuffers, 1, 
    NSOpenGLPFASamples, 4, 
    NSOpenGLPFAMinimumPolicy, 
    0 
] 

Эти вещи все обычные, я проверил. Теперь, если я

let glPixelFormat = NSOpenGLPixelFormat(attributes: glPFAttributes) 

компилятор дает мне сообщение об ошибке:

'Int' не совпадает с 'NSOpenGLPixelFormatAttribute'

Если я сделал ошибку где-то, я м не видя этого.

ответ

7

NSOpenGLPixelFormatAttribute является typeAlias из UInt32. NSOpenGLPixelFormat intializer принимает массив NSOpenGLPixelFormatAttribute так что вам нужно сделать массив и конвертировать все Int в UInt32 .Below код будет работать

let glPFAttributes:[NSOpenGLPixelFormatAttribute] = [ 
    UInt32(NSOpenGLPFAAccelerated), 
    UInt32(NSOpenGLPFADoubleBuffer), 
    UInt32(NSOpenGLPFAColorSize), UInt32(48), 
    UInt32(NSOpenGLPFAAlphaSize), UInt32(16), 
    UInt32(NSOpenGLPFAMultisample), 
    UInt32(NSOpenGLPFASampleBuffers), UInt32(1), 
    UInt32(NSOpenGLPFASamples), UInt32(4), 
    UInt32(NSOpenGLPFAMinimumPolicy), 
    UInt32(0) 
] 


let glPixelFormat = NSOpenGLPixelFormat(attributes: glPFAttributes) 
+0

Это делает трюк. Благодаря! –

Смежные вопросы