[How to build]
make clean
./configure --prefix=(installdir) --host=(arm-linux) --enable-shared --enable-pthreads --enable-pthreads-sem --enable-threads --disable-video-fbcon --disable-video-directfb --disable-video-x11 --disable-arts --disable-esd --enable-video --enable-video-gp2xwiz (--enable-video-opengl --enable-gp2xwiz-experimentalmodes --enable-gp2xwiz-rotbuffer)
make
make install
(If you want to develop your own application with this library, you need to install this library on your toolchain.)
* Addition flags for GP2X Wiz
--enable-video-opengl : Enables OpenGL ES development (You have to copy gl.h and egl.h on your toolchain's include/GLES directory first.)
--enable-gp2xwiz-experimentalmodes : Enables 24, 32bit color setting (Disabled by default)
※ USE AT YOUR OWN RISK : 24, 32bit modes are very slow and may be unstable. Don't use this feature except you know what you're doing.
--enable-gp2xwiz-rotbuffer : Reduces screen tearing on 320x240 => 240x320 rotation, but it's slower than default. (Disabled by default)
[Additional SDL_SetVideoMode() flags for developers]
1. SDL_DOUBLEBUF : Enables Wait for VSYNC
If you wanna use this feature, add SDL_DOUBLEBUF flag on SDL_SetVideoMode() and use SDL_Flip() to refresh screen.
(SDL_UpdateRects() doesn't wait for VSYNC)
example)
SDL_SetVideoMode(320,240,16,SDL_SWSURFACE|SDL_DOUBLEBUF);
SDL_Flip(screen);
2. WIZ_240X320 : Enables 240x320 screen mode
If you wanna use this feature, set screen width to 240 or smaller,
set screen height to 320 or smaller, and add WIZ_240X320 flag on SDL_SetVideoMode().
example)
SDL_SetVideoMode(240,320,16,SDL_SWSURFACE|WIZ_240X320);
--------------------------------
|(0,0) |
| |
| |
| |
| (319,239)|
--------------------------------
(320x240 rotation mode)
--------------------------------
| (0,0)|
| |
| |
| |
|(239,319) |
--------------------------------
(240x320 mode)
3. WIZ_TEARING : Set screen mode to 320x240 "diagnoal tearing" mode. (Same as GP2X Wiz's built in SDL library)
example)
SDL_SetVideoMode(320,240,16,SDL_SWSURFACE|WIZ_TEARING);
4. WIZ_UPPERSURFACE : Use upper 16MiB(3D memory area) to alloc 2D SDL_Surface.
(It's for 2D graphics mode only. With SDL_OPENGL flag, it's automatically disabled.)
If you wanna use this feature, add WIZ_UPPERSURFACE flag on SDL_SetVideoMode(),
and add WIZ_UPPERSURFACE flag on each SDL_CreateRGBSurface() calls.
Or you can use SDL_DisplayFormat() function. It allocates converted surface on upper memory when WIZ_UPPERSURFACE enabled.
Note that this feature requires MMUHACK/wARM module. If you don't have .ko file on your SD's same directory with libSDL-1.2.so.0 and your .gpe file, this feature is automatically disabled.
example)
SDL_SetVideoMode(320,240,16,SDL_SWSURFACE|WIZ_UPPERSURFACE);
SDL_CreateRGBSurface(WIZ_UPPERSURFACE,...);
5. SDL_OPENGL : Enables OpenGL ES development for GP2X Wiz.
If you wanna use this feature, set SDL_OPENGL flag on SDL_SetVideoMode(),
And dynamic link GP2X Wiz's libopengles_lite.so and libwizGLES.so/libglport.so at compiling your apps.
You can use this flag with WIZ_240X320/WIZ_TEARING flags for set screen direction, but can't use this flag with WIZ_UPPERSURFACE/SDL_DOUBLEBUF.
(SDL_DOUBLEBUF and WIZ_UPPERSURFACE flags are automatically disabled when SDL_OPENGL flag enabled.)
usage for older(~firmware 1.1.0) libraries)
SDL_SetVideoMode(240,320,16,SDL_OPENGL|WIZ_240X320); - 240x320 mode to prevent diagnoal tearing.
SDL_SetVideoMode(320,240,16,SDL_OPENGL|WIZ_TEARING); - Default 320x240 mode. It's have diagnoal tearing.
arm-openwiz-linux-gnu-g++ (your options) -lSDL -lwizGLES -lopengles_lite
usage for newer(firmware 1.2.0) libraries)
SDL_SetVideoMode(320,240,16,SDL_OPENGL); - Newer libraries are eliminated diagnoal tearing and doesn't support 240x320 mode.
arm-openwiz-linux-gnu-g++ (your options) -lSDL -lglport -lopengles_lite
Note : Don't use SDL_OPENGLBLIT flag! It's veryvery slow.
[Modifications for SDL_GL_SetAttribute() function]
SDL_GL_RED_SIZE, SDL_GL_GREEN_SIZE, SDL_GL_BLUE_SIZE, SDL_GL_ALPHA_SIZE, SDL_GL_BUFFER_SIZE, SDL_GL_DEPTH_SIZE, SDL_GL_SWAP_CONTROL flags are enabled for OpenGL ES Lite 1.1.
Other flags are disabled because they are not supported on OpenGL ES 1.1 or GP2X Wiz's OpenGL ES Lite.
Note : SDL_GL_ALPHA_SIZE is always be zero, and SDL_GL_SWAP_CONTROL flag has no effects currently.
Special thanks to : Notaz, Orkie, Pickle, hcf, Exophase, KungPhoo, Franxis, sbock, NK, SMgal and everybody!
And PLZ forgive my poor English................. ikari