OpenGL-ES
Line 49: | Line 49: | ||
The examples have their own Makefiles for Linux host but you can copy the files | The examples have their own Makefiles for Linux host but you can copy the files | ||
to your own directory and try makefile above. This Makefile at the moment supports the basic | to your own directory and try makefile above. This Makefile at the moment supports the basic | ||
- | and PvrShell examples (01..05) but not yet PvrTools exaples ( 06 and above ). | + | and PvrShell examples (01..05) but not yet support PvrTools exaples ( 06 and above ). |
To compile some of PoverVR tutorial examples, you can use following Makefile | To compile some of PoverVR tutorial examples, you can use following Makefile | ||
Line 68: | Line 68: | ||
OGLES2IntroducingPVRTools: PVRShellOS.o OGLES2IntroducingPVRTools.o PVRShell.o PVRShellAPI.o | OGLES2IntroducingPVRTools: PVRShellOS.o OGLES2IntroducingPVRTools.o PVRShell.o PVRShellAPI.o | ||
</pre> | </pre> | ||
+ | |||
+ | === Using with QGLWidget === | ||
+ | |||
+ | There is in Qt 4.5 ready made example hellogl_es2 that can be found from | ||
+ | examples/opengl/hellogl_es2 directory. There is also equivalent examples | ||
+ | for desktop opengl and opengl_es2 . | ||
+ | |||
+ | The example is also good showing what is diference between OpenGL versions. | ||
+ | The hellogl uses plain desktop "glBegin / glEnd" method with display lists | ||
+ | as speed up method. Hellogl_es2 uses vertex attribute pointers instead glBigin/glEnd . | ||
+ | The helloes_gl2 is even more complicated because it uses programmable shaders | ||
+ | instead fixed pipeline in both of the previous exaples. | ||
+ | |||
+ | If you try compile yourself unmodified version of hellogl_es2 for maemo, | ||
+ | you need to add in <b>void GLWidget::initializeGL ()</b> | ||
+ | |||
+ | Line in beginning <pre>setlocale(LC_NUMERIC, "C"); // Reset locale for compilation</pre> | ||
+ | and after shaders has been compiled line <pre> setlocale(LC_ALL, ""); // restore locale</pre> | ||
+ | because locale affects in shader compilation even it should not do |
Revision as of 10:56, 26 March 2009
Contents |
OpenGL-ES
Maemo OpenGL-ES
Books about OpenGL-ES
Other documentation
Imagination Technologies SDK
Other related documentation
- Kate's presentaion in Bossa 2009 conference about Fremantle and section about OpenGL-ES2.0
OpenGL variants
- OpenGL-1.0 has fixed shaders and fixed API to using them
- OpenGL-2.0 adds programable shaders but fixed pipeline api is still there for backward compatibility
- OpenGL-ES1.0 is OpenGL-1.0 with lot of "syntactic sugar". extra redundant API's removed and fractional integer API added
- OpenGL-ES2.0 is OpenGL-2.0 using programable shaders is mandatory, all old fixed pipeline API's removed
Porting between openGL variants
- OpenGL-1.0 application works with OpenGL-2.0 but not opposite
- OpenGL-1.0 application is possible to port to OpenGL-ES1.0 but needs work if it is using some of removed API's
- OpenGL-2.0 application that uses programable shaders is possible to port OpenGL-ES2.0 but may need so me work
- Porting OpenGL1.0 or OpenGL-ES1.0 applications to OpenGL-ES2.0 needs lot of rewrite to use programable shaders.
Compiling under scratchbox
To compile OpenGL-ES2.0 applivations you need to have package "libgles2-dev" installed. It is as standard, part of Fremantle aplha ARMEL but at the moment it is missing from x86 version. We try to get x86 equivalent opengl-es2 emulation library available soon.
There is excellent way to familiarize yourself to OpenGL-ES2.0 by trying the PoverVR tutorials that can be found form SDK under TrainingCouse ridectory. The examples have their own Makefiles for Linux host but you can copy the files to your own directory and try makefile above. This Makefile at the moment supports the basic and PvrShell examples (01..05) but not yet support PvrTools exaples ( 06 and above ).
To compile some of PoverVR tutorial examples, you can use following Makefile
CC=g++ CPPFLAGS = -DBUILD_OGLES2 LDFLAGS=-lEGL -lX11 -lGLESv2 all:OGLES2Texturing OGLES2BasicTnL OGLES2IntroducingPVRTools OGLES2HelloTriangle_LinuxX11 OGLES2HelloTriangle_LinuxX11:OGLES2HelloTriangle_LinuxX11.o OGLES2Texturing: PVRShellOS.o OGLES2Texturing.o PVRShell.o PVRShellAPI.o OGLES2BasicTnL: PVRShellOS.o OGLES2BasicTnL.o PVRShell.o PVRShellAPI.o OGLES2IntroducingPVRTools: PVRShellOS.o OGLES2IntroducingPVRTools.o PVRShell.o PVRShellAPI.o
Using with QGLWidget
There is in Qt 4.5 ready made example hellogl_es2 that can be found from examples/opengl/hellogl_es2 directory. There is also equivalent examples for desktop opengl and opengl_es2 .
The example is also good showing what is diference between OpenGL versions. The hellogl uses plain desktop "glBegin / glEnd" method with display lists as speed up method. Hellogl_es2 uses vertex attribute pointers instead glBigin/glEnd . The helloes_gl2 is even more complicated because it uses programmable shaders instead fixed pipeline in both of the previous exaples.
If you try compile yourself unmodified version of hellogl_es2 for maemo, you need to add in void GLWidget::initializeGL ()
Line in beginningsetlocale(LC_NUMERIC, "C"); // Reset locale for compilationand after shaders has been compiled line
setlocale(LC_ALL, ""); // restore locale
because locale affects in shader compilation even it should not do