2017-07-27 2 views
0

WebGL:実際には(テクスチャ)メモリを保存する単一チャネルのテクスチャ形式を使用していますか? <a href="https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glTexImage2D.xml" rel="nofollow noreferrer">Khronos ref pages</a>から

GL_LUMINANCE:各要素は単一の輝度値です。 GL は、それを浮動小数点に変換し、次に、輝度値を赤、緑、および 青で3回複製し、アルファに1を付けて、RGBA要素 にアセンブルします。

これはWebGLにも適用されますか?もしそうなら、これは、LUMINANCEのような少ないチャネルでフォーマットされたテクスチャを使用すると、でなく、はRGBAを使用するよりもVRAMを保存することを意味しますか?

RAMについてはどうですか?

答えて

2

これはWebGLにも適用されますか?

はいこれは、そのような

なしRGBA

を使用する場合に比べVRAMを保存しないLUMINANCEとして少ないチャネルでフォーマットテクスチャを使用すると、これは実装固有(であることを意味するものではない

を行います実際にはアップロード前にデータをRGBAに拡張することを選択しています)、拡張はシェーダ内のそのようなテクスチャからサンプリングするときに、基本的にすべてのカラーコンポーネントに同じ値を提供するだけで実行する必要があります。

RAMについてはどうですか?

あなたはデータをVRAMにアップロードし、(データの参照にに保持することにより、例えば。)限り、あなたはそうしていないとして、RAMに保持されていないtexImage2Dを呼び出したら。

0

GL_LUMINANCEは、OpenGL 3.2では廃止され削除されました。今日では、GL_R8のような列挙型を使って内部形式を明示的に指定しています。インプリメンテーションは、指定されたフォーマットで内部ストレージを割り当てます(この保証は、as-ifルールのようにOpenGL仕様にはありません)。 WebGLでGL_LUMINANCEを使用しないことをお勧めします。明示的な内部フォーマットを使用して、必要に応じてシェーダ内で、またはテクスチャスウィズルを使用して展開してください。

+0

WebGL ** 2 **でのみ可能なのは... –

関連する問題