言語

iPhoneOSGameView.CreateFrameBuffer メソッド

定義

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"> このメソッドは、次の操作を実行します。

  1. LayerDrawablePropertiesを構成します。 LayerRetainsBackingRetainedBacking プロパティを設定するために使用され、 LayerColorFormatColorFormat プロパティの設定に使用されます。
  2. ConfigureLayer(CAEAGLLayer) が呼び出されます。
  3. GraphicsContextが作成され、順番にEAGLContextが作成されます。 EAGLContextは、EAGLContext プロパティを使用して取得できます。
  4. レンダーバッファーが作成され、 RenderbufferOes プロパティとして GL コンテキストにバインドされます。 renderbuffer には、 Renderbuffer経由でアクセスできます。
  5. RenderBufferStorage(nuint, CAEAGLLayer) は、上記のレンダーバッファーを EAGLContextにバインドするために呼び出されます。
  6. フレームバッファーが作成され、 FramebufferOes プロパティとして GL コンテキストにバインドされます。 フレームバッファーには、 Framebuffer経由でアクセスできます。
  7. フレームバッファーとレンダーバッファーは、次の方法でバインドされます。 GL.Oes.FramebufferRenderbuffer (All.FramebufferOes, All.ColorAttachment0Oes, All.RenderbufferOes, renderbuffer);
  8. Size は、現在の Bounds 値に基づいて初期化されます。
  9. GL.Viewport(0, 0, Size.Width, Size.Height) が呼び出されます。
  10. GL.Scissor(0, 0, Size.Width, Size.Height) が呼び出されます。
</block><block subset="none" type="overrides">

継承子は、 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>

適用対象