2017-02-07 6 views
0

Ich habe diesen Apple-Beispielcode GLEssentials sample code heruntergeladen. Ich möchte ein paar Experimente mit dem Tiefenpuffer durchführen, also habe ich mich zuerst für BUFFER_BITS entschieden.OpenGLES 2.0 falsche Tiefe Puffer Bits

Ich habe nächsten Code OpenGLRenderer.m in -initWithDefaultFBO Methode:

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

aber in ES2Renderer.m Ich sehe nächste Zeile:

// 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); 

ich nächste Ausgabe hatte

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

Warum ist das passiert? Ist es ein Fehler?

PS: Ich habe nur im iOS-Simulator getestet, weil ich kein iOS-Gerät habe.

Antwort

1

Die spec sagt:

Ein OpenGL ES Implementierung seine Zuweisung von interner Komponentenauflösung auf jedem RenderbufferStorage Parameter (außer Ziel) auf Basis variieren können, aber die Verteilung und ausgewählt internes Format muss keine Funktion von beliebig sein anderer Staat und kann nicht geändert werden, sobald sie eingerichtet sind. Die tatsächliche Auflösung in Bits jeder Komponente des zugeordneten Bildes kann mit GetRenderbufferParameteriv abgefragt werden.

Grundsätzlich ist OpenGLES erlaubt, eine andere Bittiefe zu wählen, als angefordert wurde.

Ich vermute, dass auf dem Gerät ein tatsächlicher 16-Bit-Tiefenpuffer verwendet werden würde.

+0

Vielen Dank für OpenGLES Link-Spezifikation, ich bin total vergessen. – frankWhite

Verwandte Themen