グラフィックフレームワークのココアラッパーに取り組んでいます。
最終的に物を描くために、私はこれをやっています:
- (void)drawRect:(NSRect)rect
{
CGContextRef ctx = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
CGContextDrawImage(ctx, NSRectToCGRect(rect), image);
}
のサブクラス内NSView
。
Gosu や Irrlicht などの他のフレームワークを調べたところ、NSOpenGL
次のような複雑なことを常に行っていることがわかりました。
// Settings, depending on fullscreen or not
NSOpenGLPixelFormatAttribute windowedAttrs[] =
{
NSOpenGLPFADoubleBuffer,
NSOpenGLPFAScreenMask,
(NSOpenGLPixelFormatAttribute)CGDisplayIDToOpenGLDisplayMask(CGMainDisplayID()),
NSOpenGLPFADepthSize,
(NSOpenGLPixelFormatAttribute)16,
(NSOpenGLPixelFormatAttribute)0
};
NSOpenGLPixelFormatAttribute fullscreenAttrs[] =
{
NSOpenGLPFADoubleBuffer,
NSOpenGLPFAScreenMask,
(NSOpenGLPixelFormatAttribute)CGDisplayIDToOpenGLDisplayMask(CGMainDisplayID()),
NSOpenGLPFAFullScreen,
NSOpenGLPFADepthSize,
(NSOpenGLPixelFormatAttribute)16,
(NSOpenGLPixelFormatAttribute)0
};
NSOpenGLPixelFormatAttribute* attrs = fullscreen ? fullscreenAttrs : windowedAttrs;
// Create pixel format and OpenGL context
ObjRef<NSOpenGLPixelFormat> fmt(
[[NSOpenGLPixelFormat alloc] initWithAttributes:attrs]);
::context = [[NSOpenGLContext alloc] initWithFormat: fmt.obj() shareContext:nil];
なぜ彼らはそんなことをしているのですか?私の「単純な」方法は大丈夫ですか?