iPhoneOSGameView.CreateFrameBuffer Metodo

Definizione

Crea il framebuffer in modo che sia possibile eseguire operazioni OpenGL.

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

Eccezioni

ContextRenderingApi non è stato inizializzato.

LayerColorFormat non è stato inizializzato.

L'istanza di è stata Dispose(Boolean) richiamata.

Commenti

Questo metodo viene richiamato per creare un'implementazione IGraphicsContext , creare un EAGLContextoggetto e inizializzare il contesto GL in modo che esista un framebuffer e renderbuffer per le chiamate GL future.

Questo metodo viene richiamato da : LayoutSubviews(), Run()e Run(Double).

<block subset="none" type="behaviors"> Questo metodo esegue le operazioni seguenti:

  1. Configurare l'oggetto Layer.DrawableProperties LayerRetainsBacking viene utilizzato per impostare la RetainedBacking proprietà , mentre LayerColorFormat viene utilizzato per impostare la ColorFormat proprietà .
  2. ConfigureLayer(CAEAGLLayer) viene richiamato.
  3. Viene GraphicsContext creato , che a sua volta crea un oggetto EAGLContext. L'oggetto EAGLContext può essere recuperato tramite la EAGLContext proprietà .
  4. Viene creato un renderingbuffer e associato al contesto GL come RenderbufferOes proprietà. Il renderingbuffer è accessibile tramite Renderbuffer.
  5. RenderBufferStorage(nuint, CAEAGLLayer) viene richiamato per associare il renderingbuffer precedente a EAGLContext.
  6. Un framebuffer viene creato e associato al contesto GL come FramebufferOes proprietà. Il framebuffer è accessibile tramite Framebuffer.
  7. Il framebuffer e il renderingbuffer sono associati tra loro: GL.Oes.FramebufferRenderbuffer (All.FramebufferOes, All.ColorAttachment0Oes, All.RenderbufferOes, renderbuffer);
  8. Size viene inizializzato in base al valore corrente Bounds .
  9. GL.Viewport(0, 0, Size.Width, Size.Height) viene richiamato.
  10. GL.Scissor(0, 0, Size.Width, Size.Height) viene richiamato.
</block><block subset="none" type="overrides">

Gli eredi possono eseguire l'override di ConfigureLayer(CAEAGLLayer)o questo metodo per aggiungere logica di costruzione aggiuntiva, ad esempio per aggiungere un buffer di profondità. Se è necessario configurare solo il livello, eseguire l'override di ; in caso contrario, eseguire l'override di questo metodo e chiamare questa implementazione ConfigureLayerper creare il framebuffer e il renderingbuffer.

Il fallback OpenGLES intelligente può essere eseguito modificando se ContextRenderingApi si verifica un errore. Per esempio:

<esempio>

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>

Si applica a