1

私は OpenGL の初心者ではありませんが、専門家でもありません。多くのチュートリアルでは、3D、2D、投影、直交などの描画方法を教えていますが、ビューを設定するのはどうですか? (ココア、Mac の NSOpenGLView)。

たとえば、私はこれを持っています:

- (id) initWithFrame: (NSRect) frame
{
    GLuint attribs[] = { //PF: PixelAttibutes
            NSOpenGLPFANoRecovery,
            NSOpenGLPFAWindow,
            NSOpenGLPFAAccelerated,
            NSOpenGLPFADoubleBuffer,
            NSOpenGLPFAColorSize, 24,
            NSOpenGLPFAAlphaSize, 8,
            NSOpenGLPFADepthSize, 24,
            NSOpenGLPFAStencilSize, 8,
            NSOpenGLPFAAccumSize, 0,
            0
        };
    NSOpenGLPixelFormat* fmt = [[NSOpenGLPixelFormat alloc] initWithAttributes: (NSOpenGLPixelFormatAttribute*) attribs];
return self = [super initWithFrame:frame pixelFormat: [fmt autorelease]];
}

特にそれらを組み合わせるとき、私はそれらの使用法をよく理解していません。

例えば:

ビューを全画面表示できるようにしたい場合は、 NSOpenGLPFAFullScreen のみを記述する必要がありますか? または両方?(可能なということは、常に全画面表示であるとは限らないことを意味します)

ダブルバッファに関して、これは正確には何ですか? (以下:Appleの定義)

存在する場合、この属性は、ダブルバッファリングされたピクセル形式のみが考慮されることを示します。それ以外の場合は、単一バッファーのピクセル形式のみが考慮されます

色について: NSOpenGLPFAColorSize が 24 で NSOpenGLPFAColorSize が 8 の場合、アルファ コンポーネントと RGB コンポーネントの処理が異なることを意味しますか? 前者を 32 に設定し、後者を 0 に設定するとどうなりますか?

などなど、一般的に、ビューを最初から設定する方法を学ぶにはどうすればよいですか?

前もって感謝します。

イグナシオ。

4

1 に答える 1

2

色に関しては、私には違いがよくわかりません。

ダブル バッファリングについて: フレーム レートが 3 fps と遅いとします。画面にすべてを描画するのに 3 分の 1 秒かかる場合は、それらが描画されているのを見ることになります。たとえば、ペインターのアルゴリズムを使用して描画されている場合は、最初に背景のポリゴンが表示され、次に物事がクローズアップされます。また、最後に描画されるものは、次のフレームを描画するためにクリアされる前に一瞬だけオンになります。

ダブル バッファリングは、すべてをオフスクリーン イメージにレンダリングしてから、レンダリングされたイメージ全体を画面に配置します。したがって、全体をレンダリングするまでアクションは表示されませんが、不完全なフレームも表示されません。

詳細については、http://en.wikipedia.org/wiki/Multiple_buffering#Double_buffering_in_computer_graphics

于 2010-05-06T15:24:02.453 に答える