Read this first: Non working features

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]

I’d be interested in seeing a Juce bug tracking system with tickets that I could open and monitor. I’m sure Jules would love that :lol: :lol: :lol:

Bugs? No, they’re just little tests I create sometimes, to make sure you’re all paying attention.

Still no OpenGL?

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.

Does that entail a cross platform low level opengl renderer?

That’s my intention.

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.

Any insight to your approach?

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=“sonic59”]Any insight to your approach?

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.

Awesome

Jules,

You might be interested by this project:
http://kifri.fri.uniza.sk/~chochlik/oglplus/html/index.html

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.

Cool - thanks for the link, I’ll check that out!

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!

How far is OpenGL support?

Not too far…

|<---- THIS FAR ----->|

Not too long…

Turning off OpenGL for Android for now?

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....

Not so fast. Turned off OpenGL and got this… Atomic no good?