2017-02-07 10 views
0

このAppleサンプルコードGLEssentials sample codeをダウンロードしました。デプスバッファでいくつかの実験をしたいので、まずBUFFER_BITSをチェックすることにしました。OpenGLES 2.0間違ったデプスバッファビット

Iは-initWithDefaultFBO方法でOpenGLRenderer.mに次のコードを追加:私は次の出力を有し

// code from sample 
NSLog(@"%s %s\n", glGetString(GL_RENDERER), glGetString(GL_VERSION)); 

// buffer bits check 
GLint depthBits; 
glGetIntegerv(GL_DEPTH_BITS, &depthBits); 
printf("depthBits: %d\n", depthBits); 

GLEssentials[3630:112826] Apple Software Renderer OpenGL ES 2.0 APPLE-12.4.2 
depthBits: 24 

しかしES2Renderer.mに、私は次の行を参照:

// using 16-bit depth buffer 
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, backingWidth, backingHeight); 

なぜ起こったのですか?それはバグですか?

PS:私はiosデバイスがないので、iOSシミュレータでのみテストしました。

答えて

1

specは言う:

アンのOpenGL ESの実装では、(対象を除く)任意RenderbufferStorageパラメータに基づいて、内部コンポーネント解像度のその配分を変えることができるが、割り当て及び選択された内部フォーマットは任意の関数であってはなりませんいったん確立されると変更することはできません。 GetRenderbufferParameterivを使用して、割り当てられたイメージの各コンポーネントの実際のビット分解能を照会することができます。

基本的に、OpenGLESは、要求されたビット深度とは異なるビット深度を選択することができます。

デバイスでは、実際の16ビット深度バッファが使用されると考えられます。

+0

OpenGLESリンク仕様をありがとう、私はそれを完全に忘れています。 – frankWhite

関連する問題