Qt with OpenGL ES 1.1 on Maemo / N900

Qt with OpenGL ES 1.1 on Maemo / N900

Thomas Perl
Karma: 2689
2010-09-02 13:13 UTC
Hello!

According to the OpenGL ES Wiki page[1], Qt on Maemo only supports
OpenGL ES 2.x. Is this really true? I've added the following two lines
to my .pro file, and my application compiles, links and runs happily.
However, the window (a QGLWidget) will stay black - nothing is drawn
on the screen.

DEFINES += QT_NO_OPENGL_ES_2 QT_OPENGL_ES_1
LIBS += -lGLES_CM

Now my questions:

1.) Is it possible to use QGLWidget with OpenGL ES 1.1 on the N900?
2.) Is there a minimal example using QGLWidget + OpenGL ES 1.1?

The same code works fine when compiled with Qt under Ubuntu on a
laptop, so the code works and does draw something ;) I'm using the
experimental Qt 4.7.x packages from Extras-Devel in Scratchbox and on
the device.

Any help appreciated :)

Thanks!
Thomas

[1] http://wiki.maemo.org/OpenGL-ES
  •  Reply

Re: Qt with OpenGL ES 1.1 on Maemo / N900

<kate.alhola at nokia.com>

2010-09-03 11:14 UTC
On Sep 2, 2010, at 4:13 PM, ext Thomas Perl wrote:

> Hello!
>
> According to the OpenGL ES Wiki page[1], Qt on Maemo only supports
> OpenGL ES 2.x. Is this really true? I've added the following two lines
> to my .pro file, and my application compiles, links and runs happily.
> However, the window (a QGLWidget) will stay black - nothing is drawn
> on the screen.
>
> DEFINES += QT_NO_OPENGL_ES_2 QT_OPENGL_ES_1
> LIBS += -lGLES_CM
>
> Now my questions:
>
> 1.) Is it possible to use QGLWidget with OpenGL ES 1.1 on the N900?
> 2.) Is there a minimal example using QGLWidget + OpenGL ES 1.1?
>

By default in device there is only OpenGL2 libraries, there are extra
packages libgles1-sgx-img and libgles-sgx-dev containing OpenGL-ES1 .
The implementation is based emulating OpenGL-ES1 fixed function pipeline
by special shader code loaded. That may cause problems, because
Qt uses by default GLES2. It may happen that if you try run GLES1
functions under QGlwidget, ir tuns happily but does not draw anything if
GLES1 emulation is not initialized and shader codes loaded. I don't
know is it possible to load emulation ( initialize GLES1) without doing
some harm for other Qt GL stuff.

Kate



> The same code works fine when compiled with Qt under Ubuntu on a
> laptop, so the code works and does draw something ;) I'm using the
> experimental Qt 4.7.x packages from Extras-Devel in Scratchbox and on
> the device.
>
> Any help appreciated :)
>
> Thanks!
> Thomas
>
> [1] http://wiki.maemo.org/OpenGL-ES

  •  Reply

Re: Qt with OpenGL ES 1.1 on Maemo / N900

Thomas Perl
Karma: 2689
2010-09-03 15:26 UTC
Hi!

2010/9/3 <kate.alhola@nokia.com>:
> By default in device there is only OpenGL2 libraries, there are extra
> packages libgles1-sgx-img and libgles-sgx-dev containing OpenGL-ES1 .
> The implementation is based emulating OpenGL-ES1 fixed function pipeline
> by special shader code loaded. That may cause problems, because
> Qt uses by default GLES2. It may happen that if you try run GLES1
> functions under QGlwidget, ir tuns happily but does not draw anything if
> GLES1 emulation is not initialized and shader codes loaded. I don't
> know is it possible to load emulation ( initialize GLES1) without doing
> some harm for other Qt GL stuff.

Thanks for the clarification. I'm going to port my code to
QGraphicsView then and use that to gain accelerated GLES2 graphics
(with QGLWidget), so I don't have to deal with shader programs
directly :)

Greetings,
Thomas
  •  Reply