Lenguaje

iPhoneOSGameView.CreateFrameBuffer Método

Definición

Crea el framebuffer para que se puedan realizar operaciones de OpenGL.

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

Excepciones

ContextRenderingApi no se ha inicializado.

La instancia se Dispose(Boolean) ha invocado en ella.

Comentarios

Este método se invoca para crear una IGraphicsContext implementación, crear un EAGLContexty inicializar el contexto gl para que exista un framebuffer y renderbuffer para futuras llamadas GL.

Este método se invoca mediante: LayoutSubviews(), Run()y Run(Double).

<block subconjunto="none" type="behaviors"> Este método realiza las siguientes operaciones:

  1. Configure el objeto LayerDrawableProperties. LayerRetainsBacking se usa para establecer la RetainedBacking propiedad , mientras LayerColorFormat que se usa para establecer la ColorFormat propiedad .
  2. Se invoca a ConfigureLayer(CAEAGLLayer).
  3. GraphicsContext se crea , que a su vez crea un EAGLContextobjeto . EAGLContext se puede recuperar a través de la EAGLContext propiedad .
  4. Se crea un renderbuffer y se enlaza al contexto GL como la RenderbufferOes propiedad . El renderbuffer es accesible a través de Renderbuffer.
  5. RenderBufferStorage(nuint, CAEAGLLayer) se invoca para enlazar el renderbuffer anterior a EAGLContext.
  6. Se crea un framebuffer y se enlaza al contexto GL como la FramebufferOes propiedad . El framebuffer es accesible a través de Framebuffer.
  7. El framebuffer y renderbuffer se enlazan juntos: GL.Oes.FramebufferRenderbuffer (All.FramebufferOes, All.ColorAttachment0Oes, All.RenderbufferOes, renderbuffer);
  8. Size se inicializa en función del valor actual Bounds .
  9. Se invoca a GL.Viewport(0, 0, Size.Width, Size.Height).
  10. Se invoca a GL.Scissor(0, 0, Size.Width, Size.Height).
</block><block subconjunto="none" type="overrides">

Los heredadores pueden invalidar o ConfigureLayer(CAEAGLLayer)este método para agregar lógica de construcción adicional (por ejemplo, para agregar un búfer de profundidad). Si solo es necesario configurar la capa, invalide ConfigureLayer; de lo contrario, invalide este método y llame a esta implementación para crear framebuffer y renderbuffer.

La reserva inteligente de OpenGLES se puede realizar cambiando si ContextRenderingApi se produce un error. Por ejemplo:

<ejemplo>

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>

Se aplica a