Apple Developer Connection
Advanced Search
Member Login Log In | Not a Member? Contact ADC

< Previous PageNext Page >

OpenGLコンテキストを設定する

OpenGLコンテキストのピクセル形式では、バッファ(深度バッファ、アルファバッファ、ステンシルバッファ、アキュムレーションバッファ)を指定するピクセル形式が、コンテキストのほかの属性に加えて必要になります。Listing 5-3に、OpenGLコンテキストの設定方法を示します。コードで番号を付けた各行については、リストの後に詳しく説明します。

Listing 5-3  OpenGLコンテキストの設定

NSOpenGLPixelFormat *format;// 1
NSOpenGLPixelFormatAttribute attributes[] = {// 2
                    NSOpenGLPFAFullScreen,
                    NSOpenGLPFAScreenMask,
                    CGDisplayIDToOpenGLDisplayMask(kCGDirectMainDisplay),
                    NSOpenGLPFANoRecovery,
                    NSOpenGLPFADoubleBuffer,
                    NSOpenGLPFAAccelerated,
                    NSOpenGLPFADepthSize,
                    24,
                    (NSOpenGLPixelFormatAttribute) 0
                };
 
format = [[[NSOpenGLPixelFormat alloc] initWithAttributes:attributes]
                                         autorelease];// 3
_openGLContext = [[NSOpenGLContext alloc] // 4
                    initWithFormat:format
                    shareContext:nil];
if(_openGLContext == nil) // 5
    {
        NSLog(@"Cannot create OpenGL context");
        [NSApp terminate:nil];
    }

このコードが実行することを以下に示します。

  1. NSOpenGLPixelFormatオブジェクトの記憶領域を宣言する。OpenGLコンテキストの作成時に形式を指定します。

  2. ピクセル形式に対応した属性を設定する。特に、これらの属性によってフルスクリーンコンテキストと深度バッファが指定されます。NSOpenGLPixelFormatは、使用可能な形式属性についての詳細な説明を提供します。少なくとも、QCRenderer用に色バッファと深度バッファを提供する必要があります。

  3. ピクセル形式オブジェクトを割り当て、ピクセル形式属性で初期化する。

  4. OpenGLコンテキストを割り当て、ピクセル形式オブジェクトを使用して初期化します。

  5. OpenGLコンテキストがnilでないことを確認する。nilの場合、アプリケーションを終了する必要があります。



< Previous PageNext Page >


Last updated: 2006-12-05




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.
Get information on Apple products.
Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Copyright © 2007 Apple Inc.
All rights reserved. | Terms of use | Privacy Notice