iPhoneOSGameView.CreateFrameBuffer メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
OpenGL 操作を実行できるようにフレームバッファーを作成します。
protected virtual void CreateFrameBuffer();
abstract member CreateFrameBuffer : unit -> unit
override this.CreateFrameBuffer : unit -> unit
例外
ContextRenderingApi が初期化されていません。
LayerColorFormat が初期化されていません。
インスタンスが呼び出 Dispose(Boolean) 。
注釈
このメソッドは、 IGraphicsContext 実装を作成し、 EAGLContextを作成し、GL コンテキストを初期化して、将来の GL 呼び出し用にフレームバッファーとレンダーバッファーが存在するように呼び出されます。
このメソッドは、 LayoutSubviews()、 Run()、および Run(Double)によって呼び出されます。
<block subset="none" type="behaviors"> このメソッドは、次の操作を実行します。
- LayerのDrawablePropertiesを構成します。 LayerRetainsBacking は RetainedBacking プロパティを設定するために使用され、 LayerColorFormat は ColorFormat プロパティの設定に使用されます。
- ConfigureLayer(CAEAGLLayer) が呼び出されます。
-
GraphicsContextが作成され、順番にEAGLContextが作成されます。
EAGLContextは、EAGLContext プロパティを使用して取得できます。 - レンダーバッファーが作成され、
RenderbufferOesプロパティとして GL コンテキストにバインドされます。 renderbuffer には、 Renderbuffer経由でアクセスできます。 -
RenderBufferStorage(nuint, CAEAGLLayer) は、上記のレンダーバッファーを
EAGLContextにバインドするために呼び出されます。 - フレームバッファーが作成され、
FramebufferOesプロパティとして GL コンテキストにバインドされます。 フレームバッファーには、 Framebuffer経由でアクセスできます。 - フレームバッファーとレンダーバッファーは、次の方法でバインドされます。
GL.Oes.FramebufferRenderbuffer (All.FramebufferOes, All.ColorAttachment0Oes, All.RenderbufferOes, renderbuffer); - Size は、現在の Bounds 値に基づいて初期化されます。
-
GL.Viewport(0, 0, Size.Width, Size.Height)が呼び出されます。 -
GL.Scissor(0, 0, Size.Width, Size.Height)が呼び出されます。
継承子は、 ConfigureLayer(CAEAGLLayer)またはこのメソッドをオーバーライドして、追加の構築ロジック (深度バッファーを追加する場合など) を追加できます。 レイヤーのみを構成する必要がある場合は、 ConfigureLayerオーバーライドします。それ以外の場合は、このメソッドをオーバーライドし、この実装を呼び出してフレームバッファーとレンダーバッファーを作成します。
インテリジェント OpenGLES フォールバックは、エラーが発生した場合に ContextRenderingApi を変更することで実行できます。 例えば次が挙げられます。
<例>
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>