Langue

iPhoneOSGameView.CreateFrameBuffer Méthode

Définition

Crée le framebuffer afin que les opérations OpenGL puissent être effectuées.

protected virtual void CreateFrameBuffer();
abstract member CreateFrameBuffer : unit -> unit
override this.CreateFrameBuffer : unit -> unit

Exceptions

ContextRenderingApi n’a pas été initialisé.

LayerColorFormat n’a pas été initialisé.

L’instance a été Dispose(Boolean) appelée dessus.

Remarques

Cette méthode est appelée pour créer une IGraphicsContext implémentation, créer un EAGLContextcontexte GL et initialiser le contexte GL afin qu’un framebuffer et renderbuffer existent pour les appels GL futurs.

Cette méthode est appelée par : LayoutSubviews(), Run()et Run(Double).

<block subset="none » type="behaviors »> Cette méthode effectue les opérations suivantes :

  1. Configurez le Layerfichier .DrawableProperties LayerRetainsBacking est utilisé pour définir la RetainedBacking propriété, tandis qu’il LayerColorFormat est utilisé pour définir la ColorFormat propriété.
  2. ConfigureLayer(CAEAGLLayer) est appelé.
  3. Le GraphicsContext fichier est créé, qui à son tour crée un EAGLContext. Il EAGLContext peut être récupéré par le biais de la EAGLContext propriété.
  4. Un renderbuffer est créé et lié au contexte GL en tant que RenderbufferOes propriété. Le renderbuffer est accessible via Renderbuffer.
  5. RenderBufferStorage(nuint, CAEAGLLayer) est appelé pour lier le renderbuffer ci-dessus à EAGLContext.
  6. Un framebuffer est créé et lié au contexte GL en tant que FramebufferOes propriété. Le framebuffer est accessible via Framebuffer.
  7. Le framebuffer et le renderbuffer sont liés ensemble : GL.Oes.FramebufferRenderbuffer (All.FramebufferOes, All.ColorAttachment0Oes, All.RenderbufferOes, renderbuffer);
  8. Size est initialisé en fonction de la valeur actuelle Bounds .
  9. GL.Viewport(0, 0, Size.Width, Size.Height) est appelé.
  10. GL.Scissor(0, 0, Size.Width, Size.Height) est appelé.
</block><block sous-ensemble="none » type="overrides »>

Les hériteurs peuvent remplacer soit ConfigureLayer(CAEAGLLayer), soit cette méthode pour ajouter une logique de construction supplémentaire (par exemple, pour ajouter une mémoire tampon de profondeur). Si seule la couche doit être configurée, remplacez ConfigureLayer; sinon, remplacez cette méthode et appelez cette implémentation pour créer le framebuffer et renderbuffer.

La secours OpenGLES intelligente peut être effectuée en modifiant le ContextRenderingApi cas échéant une erreur. Par exemple:

<Exemple>

protected override CreateFrameBuffer()
{
    try {
        ContextRenderingApi = EAGLRenderingAPI.OpenGLES2;
        base.CreateFrameBuffer();
    } catch (Exception) {
        // device doesn't support OpenGLES 2.0; retry with 1.1:
        ContextRenderingApi = EAGLRenderingAPI.OpenGLES1;
        base.CreateFrameBuffer();
    }
}

</example></block>

S’applique à