Я портирую приложение для iPhone на Android, и мне нужно использовать кадровые буферы OpenGL.У меня Nexus One, и вызов glGet (GL_EXTENSIONS) показывает, что Nexus One поддерживает то же расширение фреймбуфера, что и iPhone.Однако я не могу вызвать функции, связанные с расширением OpenGL, в моем GLSurfaceView.Когда я вызываю простую функцию get кадрового буфера, я получаю исключение UnsupportedOperationException.
Я не могу решить эту проблему, и я должен иметь кадровые буферы для продолжения разработки.Нужно ли передавать некоторые параметры при создании контекста OpenGL, чтобы получить полностью работоспособный объект контекста OpenGL?Вот блок кода, который я пытаюсь запустить, который определяет возможности оборудования.Он утверждает, что поддерживает расширение, и мой объект gl является экземпляром GL11ExtensionPack, но вызов glGetFramebufferAttachmentParameterivOES завершается неудачно с UnsupportedOperationException.
public void runEnvironmentTests()
{
String extensions = gl.glGetString(GL11.GL_EXTENSIONS);
Log.d("Layers Graphics", extensions);
if (gl instanceof GL11ExtensionPack) {
Log.d("Layers Graphics", "GL11 Extension Pack supported");
GL11ExtensionPack g = (GL11ExtensionPack) gl;
int[] r = new int[1];
try {
g.glGetFramebufferAttachmentParameterivOES(GL11ExtensionPack.GL_FRAMEBUFFER_OES, GL11ExtensionPack.GL_COLOR_ATTACHMENT0_OES, L11.GL_TEXTURE_2D, r, 0);
Log.d("Layers Graphics", "Framebuffers are supported");
} catch (UnsupportedOperationException e) {
e.printStackTrace();
framebuffersSupported = false;
Log.d("Layers Graphics", "Framebuffers are NOT supported");
}
}
}
Если кто-нибудь успешно использовал расширение GL_FRAMEBUFFERS_OES, пожалуйста, дайте мне знать.Я начинаю думать, что это может быть просто не реализовано в Java API!