iPhoneOSGameView.CreateFrameBuffer Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Cria o framebuffer para que as operações OpenGL possam ser executadas.
protected virtual void CreateFrameBuffer();
abstract member CreateFrameBuffer : unit -> unit
override this.CreateFrameBuffer : unit -> unit
Exceções
ContextRenderingApi não foi inicializado.
LayerColorFormat não foi inicializado.
A instância foi Dispose(Boolean) invocada nela.
Comentários
Esse método é invocado para criar uma IGraphicsContext implementação, criar um EAGLContexte inicializar o contexto GL para que existam um framebuffer e renderbuffer para chamadas GL futuras.
Esse método é invocado por: LayoutSubviews(), e Run()Run(Double).
<block subset="none" type="behaviors"> Este método executa as seguintes operações:
- Configure os Layer's DrawableProperties. LayerRetainsBacking é usado para definir a RetainedBacking propriedade, enquanto LayerColorFormat é usado para definir a ColorFormat propriedade.
- ConfigureLayer(CAEAGLLayer) é invocado.
- O GraphicsContext é criado, que, por sua vez, cria um EAGLContext. O
EAGLContextpode ser recuperado por meio da EAGLContext propriedade. - Um renderbuffer é criado e associado ao contexto GL como a
RenderbufferOespropriedade. O renderbuffer é acessível por meio de Renderbuffer. -
RenderBufferStorage(nuint, CAEAGLLayer) é invocado para associar o renderbuffer acima a
EAGLContext. - Um framebuffer é criado e associado ao contexto GL como a
FramebufferOespropriedade. O framebuffer é acessível por meio de Framebuffer. - O framebuffer e o renderbuffer são associados:
GL.Oes.FramebufferRenderbuffer (All.FramebufferOes, All.ColorAttachment0Oes, All.RenderbufferOes, renderbuffer); - Size é inicializado com base no valor atual Bounds .
-
GL.Viewport(0, 0, Size.Width, Size.Height)é invocado. -
GL.Scissor(0, 0, Size.Width, Size.Height)é invocado.
Os herdadores podem substituir ou ConfigureLayer(CAEAGLLayer)esse método para adicionar lógica de construção adicional (por exemplo, para adicionar um buffer de profundidade). Se apenas a camada precisar ser configurada, substitua ConfigureLayer; caso contrário, substitua esse método e chame essa implementação para criar o framebuffer e o renderbuffer.
O fallback do OpenGLES inteligente pode ser executado alterando o ContextRenderingApi caso de ocorrer um erro. Por exemplo:
<exemplo>
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>