iPhoneOSGameView.CreateFrameBuffer Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.
LayerColorFormat 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:
- Configure el objeto LayerDrawableProperties. LayerRetainsBacking se usa para establecer la RetainedBacking propiedad , mientras LayerColorFormat que se usa para establecer la ColorFormat propiedad .
- Se invoca a ConfigureLayer(CAEAGLLayer).
-
GraphicsContext se crea , que a su vez crea un EAGLContextobjeto .
EAGLContextse puede recuperar a través de la EAGLContext propiedad . - Se crea un renderbuffer y se enlaza al contexto GL como la
RenderbufferOespropiedad . El renderbuffer es accesible a través de Renderbuffer. -
RenderBufferStorage(nuint, CAEAGLLayer) se invoca para enlazar el renderbuffer anterior a
EAGLContext. - Se crea un framebuffer y se enlaza al contexto GL como la
FramebufferOespropiedad . El framebuffer es accesible a través de Framebuffer. - El framebuffer y renderbuffer se enlazan juntos:
GL.Oes.FramebufferRenderbuffer (All.FramebufferOes, All.ColorAttachment0Oes, All.RenderbufferOes, renderbuffer); - Size se inicializa en función del valor actual Bounds .
- Se invoca a
GL.Viewport(0, 0, Size.Width, Size.Height). - Se invoca a
GL.Scissor(0, 0, Size.Width, Size.Height).
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>