Also habe ich diese Codezeile haben:glTexImage2D Fehler Feinheiten zwischen iOS, Android- inkonsistente Dokumentation
glTexImage2D(GL_TEXTURE_2D,0,GL_DEPTH_COMPONENT,shadow_tex_dim.x,shadow_tex_dim.y,0,GL_DEPTH_COMPONENT,GL_FLOAT,shadow_texture_data);
, die eine Tiefe Textur zu etablieren auf Android funktioniert gut (Lauf OpenGLES2) (und OSX).
Wenn ich es in iOS (iOS 10, auch OpenGLES2
) läuft, gibt glGetError()
GL_INVALID_OPERATION
zurück. (glGetError()
, kurz bevor diese Zeile sauber zurückkehrt).
Hier ist die Dokumentation für glTexImage2D
: http://docs.gl/es2/glTexImage2D
Beachten Sie, dass 'internalformat' gibt an, dass die einzigen gültigen Argumente sind "GL_ALPHA
, GL_LUMINANCE
, GL_LUMINANCE_ALPHA
, GL_RGB
, GL_RGBA
", aber unten im Abschnitt "Beispiele", es zeigt glTexImage2D(GL_TEXTURE_2D, 0,
GL_DEPTH_COMPONENT , fbo_width, fbo_height, 0,
GL_DEPTH_COMPONENT ,
GL_UNSIGNED_BYTE , NULL);
(die zu meinen aktuellen Zeilen sehr ähnlich ist, aber mit GL_UNSIGNED_BYTE
statt GL_FLOAT
.
Also, darf ich GL_DEPTH_COMPONENT
verwenden? Warum funktioniert das auf Android OpenGLES2
, und nicht iOS? Woher bekomme ich, dass ich GL_FLOAT
verwenden sollte (beachten Sie, dass sich das Verhalten weder bei iOS noch bei android irgendwie zu ändern scheint ...)?