This post is a meta post. Here’s the list of the features that are not currently working on Android. Feel free to append posts here when you’re finding new ones.
If you post here, also, please be ready to edit your message to remove the item once it’s implemented.
So, let’s start:
[list]
[] Modal dialog: Android doesn’t support “modal” windows, so a workaround is used to use “asynchronous” dialog instead.[/]
[] Text editor using the native version (so you could use any soft input/keyboard)[/]
[] OpenGL[/][/list]
openGL’s top of my list - in particular, what I’d like to do is actually to try rendering everything using openGL and bypass some of the clunky java UI structures. I’m trying to figure out a plan for that at the moment.
It’ll be fantastic!!! When I came to JUCE, I was searching for a multiplatform GUI system based on OpenGL. If JUCE turns on that, it would be just wonderful.
Render using software renderer (in CPU) to a giant texture and display it on a giant quad?
Render using hardware renderer (in GPU) by triangulating and tessellating JUCE paths?
Are you going to create some sort of limited scene graph optimized for quads?
Or maybe a full on 3D scene graph?
Targeting the fixed function pipeline? (GLES 1.1/GL 1+)
Or completely shader based? (GLES 2.0/ GL 2+)
Render using software renderer (in CPU) to a giant texture and display it on a giant quad?
Render using hardware renderer (in GPU) by triangulating and tessellating JUCE paths?
Are you going to create some sort of limited scene graph optimized for quads?
Or maybe a full on 3D scene graph?
Targeting the fixed function pipeline? (GLES 1.1/GL 1+)
Or completely shader based? (GLES 2.0/ GL 2+)[/quote]
To get it working initially I’ll just use software rendering to draw anti-aliased stuff, and hopefully replace them later with accelerated versions when I figure out how best to do it. But just having acceleration for solid rectangles and image rendering should be a good start.
At first, it seems like it’s overkill, but after reading it, it’s really the way an OpenGL wrapper in C++ should be made.
Its support for intergrated error reporting is awesome, the code is easy to follow (unlike OpenGL procedural mess), and it’s quite well Juce’s coding convention already.
Low-level OpenGL renderer? Be still my beating heart. Add 3D position to the animator - trivial is probably OK: it’s mainly for transitionary stuff, and once more, Juce will have the best looking GUIs on the block!
If there’s depth, and I can persuade the renderer to draw things twice, then my potential home-brew autostereoscopic monitor project will reach awesome + 1!
debug:
[exec] Android NDK: WARNING: Invalid LOCAL_CPP_EXTENSION values: cpp
[exec] Compile++ thumb : juce_jni <= MainWindow.cpp
[exec] Compile++ thumb : juce_jni <= Main.cpp
[exec] Invalid attribute name:
[exec] package
[exec] Compile++ thumb : juce_jni <= juce_core.cpp
[exec] Compile++ thumb : juce_jni <= juce_cryptography.cpp
[exec] Compile++ thumb : juce_jni <= juce_data_structures.cpp
[exec] Compile++ thumb : juce_jni <= juce_events.cpp
[exec] Compile++ thumb : juce_jni <= juce_graphics.cpp
[exec] Compile++ thumb : juce_jni <= juce_gui_basics.cpp
[exec] Compile++ thumb : juce_jni <= juce_gui_extra.cpp
[exec] Compile++ thumb : juce_jni <= juce_opengl.cpp
[exec] In file included from jni/../../../../juce/modules/juce_opengl/juce_opengl.cpp:117:
[exec] /Users/jacob/SDKs/android-ndk-r7/platforms/android-5/arch-arm/usr/include/GLES/glext.h:268:1: warning: "GL_BGRA_EXT" redefined
[exec] In file included from jni/../../../../juce/modules/juce_opengl/juce_opengl.cpp:40:
[exec] jni/../../../../juce/modules/juce_opengl/juce_opengl.h:70:1: warning: this is the location of the previous definition
[exec] In file included from jni/../../../../juce/modules/juce_opengl/juce_opengl.cpp:134:
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp: In constructor 'juce::OpenGLFrameBuffer::Pimpl::Pimpl(int, int, bool, bool)':
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:147: error: 'glGenFramebuffersOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:148: error: 'glBindFramebufferOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:160: error: 'glFramebufferTexture2DOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:164: error: 'glGenRenderbuffersOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:165: error: 'glBindRenderbufferOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:166: error: 'glIsRenderbufferOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:175: error: 'glRenderbufferStorageOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:178: error: 'glGetRenderbufferParameterivOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:179: error: 'glFramebufferRenderbufferOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp: In destructor 'juce::OpenGLFrameBuffer::Pimpl::~Pimpl()':
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:197: error: 'glDeleteRenderbuffersOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:200: error: 'glDeleteFramebuffersOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp: In member function 'void juce::OpenGLFrameBuffer::Pimpl::bind()':
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:203: error: 'glBindFramebufferOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp: In member function 'void juce::OpenGLFrameBuffer::Pimpl::unbind()':
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:204: error: 'glBindFramebufferOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp: In static member function 'static bool juce::OpenGLFrameBuffer::Pimpl::checkStatus()':
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:213: error: 'glCheckFramebufferStatusOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp: In static member function 'static void juce::OpenGLFrameBuffer::setCurrentFrameBufferTarget(GLuint)':
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:351: error: 'glBindFramebufferOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp: In member function 'bool juce::OpenGLFrameBuffer::readPixels(juce::PixelARGB*, const juce::Rectangle<int>&)':
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:391: error: 'glBindFramebufferOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp: In member function 'bool juce::OpenGLFrameBuffer::writePixels(const juce::PixelARGB*, const juce::Rectangle<int>&)':
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:414: error: 'glDrawTexiOES' was not declared in this scope
[exec] jni/../../../../juce/modules/juce_opengl/opengl/juce_OpenGLFrameBuffer.cpp:435: error: 'glBindFramebufferOES' was not declared in this scope
[exec] make: *** [obj/local/armeabi/objs/juce_jni/__/__/__/__/juce/modules/juce_opengl/juce_opengl.o] Error 1
[exec] make: *** Waiting for unfinished jobs....