iPhoneOSGameView.CreateFrameBuffer Methode

Definition

Erstellt den Framebuffer, sodass OpenGL-Vorgänge ausgeführt werden können.

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

Ausnahmen

ContextRenderingApi wurde nicht initialisiert.

LayerColorFormat wurde nicht initialisiert.

Die Instanz hat Dispose(Boolean) sie aufgerufen.

Hinweise

Diese Methode wird aufgerufen, um eine Implementierung zu erstellen, eine IGraphicsContextEAGLContextZu erstellen und den GL-Kontext zu initialisieren, sodass ein Framebuffer und renderbuffer für zukünftige GL-Aufrufe vorhanden sind.

Diese Methode wird von: LayoutSubviews(), Run(), und Run(Double).

<block subset="none" type="behaviors"> Diese Methode führt die folgenden Vorgänge aus:

  1. Konfigurieren Sie die Layer's DrawableProperties. LayerRetainsBacking wird verwendet, um die RetainedBacking Eigenschaft festzulegen, während LayerColorFormat zum Festlegen der ColorFormat Eigenschaft verwendet wird.
  2. ConfigureLayer(CAEAGLLayer) wird aufgerufen.
  3. Das GraphicsContext wird erstellt, wodurch wiederum ein EAGLContext. Die EAGLContext Kann über die EAGLContext Eigenschaft abgerufen werden.
  4. Ein Renderbuffer wird erstellt und als RenderbufferOes Eigenschaft an den GL-Kontext gebunden. Der Renderbuffer ist über Renderbuffer.
  5. RenderBufferStorage(nuint, CAEAGLLayer) wird aufgerufen, um den obigen Renderbuffer an zu EAGLContextbinden.
  6. Ein Framebuffer wird erstellt und als FramebufferOes Eigenschaft an den GL-Kontext gebunden. Der Framebuffer ist über Framebufferzugänglich.
  7. Der Framebuffer und der Renderbuffer sind aneinander gebunden: GL.Oes.FramebufferRenderbuffer (All.FramebufferOes, All.ColorAttachment0Oes, All.RenderbufferOes, renderbuffer);
  8. Size wird basierend auf dem aktuellen Bounds Wert initialisiert.
  9. GL.Viewport(0, 0, Size.Width, Size.Height) wird aufgerufen.
  10. GL.Scissor(0, 0, Size.Width, Size.Height) wird aufgerufen.
</block block><subset="none" type="overrides">

Inheritors können entweder ConfigureLayer(CAEAGLLayer)oder diese Methode außer Kraft setzen, um zusätzliche Konstruktionslogik hinzuzufügen (z. B. um einen Tiefenpuffer hinzuzufügen). Wenn nur die Ebene konfiguriert werden muss, überschreiben ConfigureLayerSie diese Methode; andernfalls überschreiben Sie diese Methode, und rufen Sie diese Implementierung auf, um den Framebuffer und renderbuffer zu erstellen.

Intelligente OpenGLES-Fallbacks können durch Ändern eines ContextRenderingApi Fehlers ausgeführt werden. Beispiel:

<Beispiel>

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>

Gilt für: