iPhoneOSGameView.CreateFrameBuffer Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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:
- Configurare l'oggetto Layer.DrawableProperties LayerRetainsBacking viene utilizzato per impostare la RetainedBacking proprietà , mentre LayerColorFormat viene utilizzato per impostare la ColorFormat proprietà .
- ConfigureLayer(CAEAGLLayer) viene richiamato.
- Viene GraphicsContext creato , che a sua volta crea un oggetto EAGLContext. L'oggetto
EAGLContextpuò essere recuperato tramite la EAGLContext proprietà . - Viene creato un renderingbuffer e associato al contesto GL come
RenderbufferOesproprietà. Il renderingbuffer è accessibile tramite Renderbuffer. -
RenderBufferStorage(nuint, CAEAGLLayer) viene richiamato per associare il renderingbuffer precedente a
EAGLContext. - Un framebuffer viene creato e associato al contesto GL come
FramebufferOesproprietà. Il framebuffer è accessibile tramite Framebuffer. - Il framebuffer e il renderingbuffer sono associati tra loro:
GL.Oes.FramebufferRenderbuffer (All.FramebufferOes, All.ColorAttachment0Oes, All.RenderbufferOes, renderbuffer); - Size viene inizializzato in base al valore corrente Bounds .
-
GL.Viewport(0, 0, Size.Width, Size.Height)viene richiamato. -
GL.Scissor(0, 0, Size.Width, Size.Height)viene richiamato.
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>