【问题标题】:OpenGL Pixel Format Attributes (NSOpenGLPixelFormatAttibutes) explanation?OpenGL像素格式属性(NSOpenGLPixelFormatAttibutes)解释?
【发布时间】:2010-05-06 23:24:02
【问题描述】:

我对 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 吗?或两者? (有能力我的意思是不总是全屏)

关于双缓冲,这究竟是什么? (下:苹果的定义)

如果存在,该属性表示 只有双缓冲像素 格式被考虑。否则, 只有单缓冲像素格式 考虑

关于颜色:如果 NSOpenGLPFAColorSize 是 24 并且 NSOpenGLPFAColorSize 是 8 那么这意味着 alpha 和 RGB 组件的处理方式不同吗?如果我将前者设置为 32,将后者设置为 0,会发生什么情况?

等等,一般来说,我如何学会从头开始设置我的视图?

提前致谢。

伊格纳西奥。

【问题讨论】:

    标签: cocoa macos opengl nsopenglview pixelformat


    【解决方案1】:

    关于颜色,我不完全确定区别。

    关于双缓冲:假设您的帧速率较慢,为 3fps。如果在屏幕上绘制所有内容需要 1/3 秒,那么您将在它们绘制时看到它们。例如,如果它是使用画家算法绘制的,您将首先看到背景多边形,然后您会看到更近的东西。此外,最后绘制的东西只会在它被清除以绘制下一帧之前打开一瞬间。

    双缓冲将所有内容渲染到屏幕外图像,然后将整个渲染图像放在屏幕上。因此,在渲染整个内容之前,您不会看到任何动作,但您也不会看到不完整的帧。

    更多信息,http://en.wikipedia.org/wiki/Multiple_buffering#Double_buffering_in_computer_graphics

    【讨论】:

      猜你喜欢
      • 2011-11-10
      • 2014-05-25
      • 2011-05-11
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      • 1970-01-01
      相关资源
      最近更新 更多