2010-05-06 26 views
0

Je ne suis pas nouveau à OpenGL, mais pas un expert. De nombreux tutoriels enseignent comment dessiner, 3D, 2D, projections, orthogonales, etc, mais comment définir une vue? (NSOpenGLView dans Cocoa, Macs).OpenGL Pixel Format Attributs (NSOpenGLPixelFormatAttibutes) explication?

Par exemple, j'ai ceci:

- (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]]; 
} 

Et je ne comprends pas très bien leur utilisation, surtout quand les combinant.

Par exemple:

Si je veux que mon point de vue à pouvoir plein écran dois-je écrire NSOpenGLPFAFullScreen seulement? ou les deux? (par capable je ne veux pas toujours dire en plein écran)

En ce qui concerne Double Buffer, qu'est-ce que c'est exactement? (Ci-dessous: la définition d'Apple)

Si présent, cet attribut indique que seul pixel double tampon formats sont pris en compte. Dans le cas contraire, uniquement les formats de pixel unique sont mises en mémoire tampon considéré

En ce qui concerne Couleur: si NSOpenGLPFAColorSize est 24 et NSOpenGLPFAColorSize est 8 alors cela signifie que les composants alpha et RVB sont traités différemment? que se passe-t-il si je mets le premier à 32 et le plus tard à 0?

Etc, etc, En général, comment puis-je apprendre à définir ma vue à partir de zéro?

Merci d'avance.

Ignacio.

Répondre

1

En ce qui concerne la couleur, je ne suis pas entièrement sûr de la différence. En ce qui concerne la double mise en mémoire tampon: Supposons que vous ayez une fréquence d'images lente, 3 images par seconde. Si cela prend un tiers de seconde pour tout dessiner sur l'écran, vous allez les voir pendant qu'ils dessinent. S'il est dessiné en utilisant l'algorithme du peintre par exemple, vous verrez d'abord les polygones d'arrière-plan, ensuite vous verrez les choses de plus près. En outre, la dernière chose à tirer ne serait que pour un instant avant qu'il ne soit effacé pour dessiner l'image suivante. Le double buffering rend tout à une image hors écran, puis met toute l'image rendue à l'écran. Ainsi, vous ne verrez aucune action tant que vous n'aurez pas rendu le tout, mais vous ne verrez pas non plus de cadre incomplet. Pour plus d'informations, veuillez contacter: