iPhoneOSGameView.CreateFrameBuffer Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Crée le framebuffer afin que les opérations OpenGL puissent être effectuées.
protected virtual void CreateFrameBuffer();
abstract member CreateFrameBuffer : unit -> unit
override this.CreateFrameBuffer : unit -> unit
Exceptions
ContextRenderingApi n’a pas été initialisé.
LayerColorFormat n’a pas été initialisé.
L’instance a été Dispose(Boolean) appelée dessus.
Remarques
Cette méthode est appelée pour créer une IGraphicsContext implémentation, créer un EAGLContextcontexte GL et initialiser le contexte GL afin qu’un framebuffer et renderbuffer existent pour les appels GL futurs.
Cette méthode est appelée par : LayoutSubviews(), Run()et Run(Double).
<block subset="none » type="behaviors »> Cette méthode effectue les opérations suivantes :
- Configurez le Layerfichier .DrawableProperties LayerRetainsBacking est utilisé pour définir la RetainedBacking propriété, tandis qu’il LayerColorFormat est utilisé pour définir la ColorFormat propriété.
- ConfigureLayer(CAEAGLLayer) est appelé.
- Le GraphicsContext fichier est créé, qui à son tour crée un EAGLContext. Il
EAGLContextpeut être récupéré par le biais de la EAGLContext propriété. - Un renderbuffer est créé et lié au contexte GL en tant que
RenderbufferOespropriété. Le renderbuffer est accessible via Renderbuffer. -
RenderBufferStorage(nuint, CAEAGLLayer) est appelé pour lier le renderbuffer ci-dessus à
EAGLContext. - Un framebuffer est créé et lié au contexte GL en tant que
FramebufferOespropriété. Le framebuffer est accessible via Framebuffer. - Le framebuffer et le renderbuffer sont liés ensemble :
GL.Oes.FramebufferRenderbuffer (All.FramebufferOes, All.ColorAttachment0Oes, All.RenderbufferOes, renderbuffer); - Size est initialisé en fonction de la valeur actuelle Bounds .
-
GL.Viewport(0, 0, Size.Width, Size.Height)est appelé. -
GL.Scissor(0, 0, Size.Width, Size.Height)est appelé.
Les hériteurs peuvent remplacer soit ConfigureLayer(CAEAGLLayer), soit cette méthode pour ajouter une logique de construction supplémentaire (par exemple, pour ajouter une mémoire tampon de profondeur). Si seule la couche doit être configurée, remplacez ConfigureLayer; sinon, remplacez cette méthode et appelez cette implémentation pour créer le framebuffer et renderbuffer.
La secours OpenGLES intelligente peut être effectuée en modifiant le ContextRenderingApi cas échéant une erreur. Par exemple:
<Exemple>
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>