2016-12-10 8 views
0

Opengl ES 2.0では、RenderbuffersまたはTexturesのどちらもFramebuffer添付ファイルとして使用できます。しかし、ドキュメントでは、奥行きの添付をテクスチャにしたい場合に指定する内部形式について混乱しています。ここでOpenGL ES 2.0:TexImage2DよりもRenderBufferStorageの内部フォーマットが異なる

glCheckFramebufferStatusの文書の抜粋されています

カラーレンダリング可能なフォーマットはGL_RGBA4、GL_RGB5_A1、およびGL_RGB565が含まれます。 GL_DEPTH_COMPONENT16は唯一の深さレンダリング可能な形式です。私はglRenderBufferStorageをチェックすると

は、今では、以下のinternalFormatsを示しています:

は、カラーレンダリング可能な、深さ-レンダリング可能、またはレンダのステンシルレンダリング可能なフォーマットを指定します。 GL_RGBA4、GL_RGB565、GL_RGB5_A1、GL_DEPTH_COMPONENT16、またはGL_STENCIL_INDEX8のいずれかのシンボル定数でなければなりません。

これらのうちのいくつかは、Framebuffer添付ファイルに必要なフォーマットと一致します。しかし、TexImage2Dをチェックすると、フォーマットがまったく違う。 InternalFormat:

テクスチャの内部フォーマットを指定します。次のシンボリック定数のいずれかである必要がありますGL_ALPHA、GL_LUMINANCE、GL_LUMINANCE_ALPHA、GL_RGB、GL_RGBA

テクセルコンポーネントのタイプ:

はテクセルデータのデータ型を指定します。次の記号値が受け入れられます:GL_UNSIGNED_BYTE、GL_UNSIGNED_SHORT_5_6_5、GL_UNSIGNED_SHORT_4_4_4_4、およびGL_UNSIGNED_SHORT_5_5_5_1

は、だから、フレームバッファの深さアタッチメントに適したテクスチャを作成するためにTexImage2Dに渡すために何不明です。 glCheckFramebufferStatusのドキュメントによると、RenderBufferを使用する必要があります。私はそれを読んでいますか?

+0

私はそれを正しく読んでいるようです。 OpenGL ES 2.0では、深度テクスチャを使用するための拡張機能があります。 https://www.khronos.org/registry/gles/extensions/OES/OES_depth_texture.txtその拡張機能がない場合、Framebufferのデプスアタッチメントとしてテクスチャを使うことはできないようです。 – authentec

答えて

1

OpenGL ES 2.0は深度テクスチャをサポートしていません。それらはES 3.0で導入されました。別に参考資料から、あなたもpress release(強調追加)でこれを見ることができます:浮動小数点テクスチャ、3Dテクスチャ、深度テクスチャ、頂点テクスチャ、NPOTテクスチャのための保証サポートを含む

大幅に強化テクスチャリング機能を、R/RGのテクスチャ、不変テクスチャ、2Dアレイテクスチャ、スウィズル、LODとミップレベルクランプ、シームレスなキューブマップとサンプラーES 2.0と深さのテクスチャを使用するには

オブジェクト、お使いのデバイスがOES_depth_texture拡張あなたをサポートする必要がありますすでに見つかりました。