Stub GLES 1.1 backend

This commit is contained in:
Shinovon 2026-05-01 11:27:14 +05:00
parent f6a5685de8
commit feefe2e742
28 changed files with 272 additions and 31 deletions

View file

@ -15,6 +15,6 @@
- [ ] Menu - [ ] Menu
- [ ] Config - [ ] Config
S60v3 (?): S60v3 / GLES 1.1:
- [ ] Backport to STLport v4 - [x] Use STLport v4
- [ ] GLES 1.1 engine - [ ] GLES 1.1 engine

View file

@ -4,5 +4,7 @@ DEFAULT ARMV6
PRJ_MMPFILES PRJ_MMPFILES
gnumakefile Icons_scalable_dc.mk gnumakefile Icons_scalable_dc.mk
gnumakefile shaders.mk gnumakefile shaders.mk
librw.mmp librw_gles2.mmp
re3.mmp re3_gles2.mmp
librw_gles1.mmp
re3_gles1.mmp

View file

@ -1,15 +1,12 @@
SYSTEMINCLUDE /epoc32/include SYSTEMINCLUDE /epoc32/include
SYSTEMINCLUDE /epoc32/include/stdapis/stlportv5
SYSTEMINCLUDE /epoc32/include/stdapis SYSTEMINCLUDE /epoc32/include/stdapis
SYSTEMINCLUDE /epoc32/include/mw SYSTEMINCLUDE /epoc32/include/mw
SYSTEMINCLUDE /epoc32/include/platform SYSTEMINCLUDE /epoc32/include/platform
SYSTEMINCLUDE /epoc32/include/platform/mw SYSTEMINCLUDE /epoc32/include/platform/mw
SYSTEMINCLUDE /epoc32/include/gles
USERINCLUDE . USERINCLUDE .
MACRO LIBRW MACRO LIBRW
MACRO RW_GL3
MACRO MASTER MACRO MASTER
DEBUGGABLE DEBUGGABLE
@ -25,4 +22,12 @@ OPTION_REPLACE ARMCC -O2 -O3
ALWAYS_BUILD_AS_ARM ALWAYS_BUILD_AS_ARM
#endif #endif
#ifdef SYMBIAN_3
SYSTEMINCLUDE /epoc32/include/stdapis/stlportv5
STDCPP STDCPP
MACRO RW_GL3
#else
SYSTEMINCLUDE /epoc32/include/stdapis/stlport
SYSTEMINCLUDE /epoc32/include/stdapis/stlport/stl
MACRO RW_GLES1
#endif

View file

@ -1,9 +1,7 @@
#include "common.mmh" #include "common.mmh"
TARGET librw.lib
TARGETTYPE lib TARGETTYPE lib
USERINCLUDE ../vendor/librw USERINCLUDE ../vendor/librw
USERINCLUDE ../vendor/librw/src USERINCLUDE ../vendor/librw/src
@ -15,6 +13,8 @@ SOURCEPATH ../vendor/librw/src
SOURCE engine.cpp error.cpp frame.cpp geometry.cpp geoplg.cpp SOURCE engine.cpp error.cpp frame.cpp geometry.cpp geoplg.cpp
SOURCEPATH ../vendor/librw/src/gl SOURCEPATH ../vendor/librw/src/gl
SOURCE gl3.cpp gl3device.cpp gl3immed.cpp gl3matfx.cpp gl3pipe.cpp gl3raster.cpp gl3render.cpp gl3shader.cpp gl3skin.cpp wdgl.cpp SOURCE gl3.cpp gl3device.cpp gl3immed.cpp gl3matfx.cpp gl3pipe.cpp gl3raster.cpp gl3render.cpp gl3shader.cpp gl3skin.cpp wdgl.cpp
SOURCEPATH ../vendor/librw/src/gles1
SOURCE rwgles1.cpp
SOURCEPATH ../vendor/librw/src SOURCEPATH ../vendor/librw/src
SOURCE hanim.cpp image.cpp light.cpp SOURCE hanim.cpp image.cpp light.cpp
SOURCEPATH ../vendor/librw/src/lodepng SOURCEPATH ../vendor/librw/src/lodepng

4
group/librw_gles1.mmp Normal file
View file

@ -0,0 +1,4 @@
#undef SYMBIAN3
#define S60V3
TARGET librw_gles1.lib
#include "librw.mmh"

4
group/librw_gles2.mmp Normal file
View file

@ -0,0 +1,4 @@
#undef S60V3
#define SYMBIAN_3
TARGET librw_gles2.lib
#include "librw.mmh"

View file

@ -1,16 +1,12 @@
#include "common.mmh" #include "common.mmh"
TARGET re3.exe
TARGETTYPE exe TARGETTYPE exe
UID 0 0xe0d67647 UID 0 0xe0d67647
LIBRARY euser.lib LIBRARY euser.lib
LIBRARY libstdcppv5.lib
LIBRARY libc.lib LIBRARY libc.lib
LIBRARY libm.lib LIBRARY libm.lib
LIBRARY libpthread.lib LIBRARY libpthread.lib
LIBRARY libglesv2.lib
LIBRARY libegl.lib
LIBRARY apparc.lib LIBRARY apparc.lib
LIBRARY cone.lib LIBRARY cone.lib
LIBRARY eikcore.lib LIBRARY eikcore.lib
@ -22,8 +18,6 @@ LIBRARY platformver.lib
EPOCSTACKSIZE 0x14000 EPOCSTACKSIZE 0x14000
EPOCHEAPSIZE 0x80000 0x4000000 EPOCHEAPSIZE 0x80000 0x4000000
STATICLIBRARY librw.lib
SYSTEMINCLUDE ../vendor/librw SYSTEMINCLUDE ../vendor/librw
SOURCEPATH . SOURCEPATH .

7
group/re3_gles1.mmp Normal file
View file

@ -0,0 +1,7 @@
#undef SYMBIAN_3
#define S60V3
TARGET re3_gles1.exe
LIBRARY libstdcpp.lib
LIBRARY libgles_cm.lib
STATICLIBRARY librw_gles1.lib
#include "re3.mmh"

8
group/re3_gles2.mmp Normal file
View file

@ -0,0 +1,8 @@
#undef S60V3
#define SYMBIAN_3
TARGET re3_gles2.exe
LIBRARY libstdcppv5.lib
LIBRARY libglesv2.lib
LIBRARY libegl.lib
STATICLIBRARY librw_gles2.lib
#include "re3.mmh"

View file

@ -5,7 +5,8 @@ do_nothing :
MAKMAKE: do_nothing MAKMAKE: do_nothing
BLD: do_nothing BLD:
$(MAKE) -C ../vendor/librw/src/gl/shaders/ -f Makefile all
CLEAN: CLEAN:
rm ../vendor/librw/src/gl/shaders/*.inc rm ../vendor/librw/src/gl/shaders/*.inc
@ -14,8 +15,7 @@ LIB: do_nothing
CLEANLIB: do_nothing CLEANLIB: do_nothing
RESOURCE: RESOURCE: do_nothing
$(MAKE) -C ../vendor/librw/src/gl/shaders/ -f Makefile all
FREEZE: do_nothing FREEZE: do_nothing

View file

@ -0,0 +1 @@
OpenC version 1.5 or later is required for installation.

View file

@ -1,11 +1,21 @@
#{"GTA III"},(0xe0d67647),1,0,0 #{"GTA III"},(0xe0d67647),1,0,0
[0x101F7961], 0, 0, 0, {"S60ProductID"}
[0x1028315F], 0, 0, 0, {"S60ProductID"}
[0x20022E6D], 0, 0, 0, {"S60ProductID"} [0x20022E6D], 0, 0, 0, {"S60ProductID"}
%{"nnproject"} %{"nnproject"}
:"nnproject" :"nnproject"
"$(EPOCROOT)epoc32\release\$(PLATFORM)\$(TARGET)\re3.exe"-"!:\sys\bin\re3.exe" IF (NOT package(0x20009A80)) OR (NOT package(0x2002372A)) ; old or missing openc
"incompatible_openc.txt"-"", FT, FORCEABORT
ENDIF
IF exists("z:\system\install\Series60v5.2.sis") AND exists("z:\sys\bin\libGLESv2.dll")
"$(EPOCROOT)epoc32\release\$(PLATFORM)\$(TARGET)\re3_gles2.exe"-"!:\sys\bin\re3.exe"
ELSE
"$(EPOCROOT)epoc32\release\$(PLATFORM)\$(TARGET)\re3_gles1.exe"-"!:\sys\bin\re3.exe"
ENDIF
"$(EPOCROOT)\epoc32\data\z\private\10003a3f\import\apps\re3_reg.rsc" - "!:\private\10003a3f\import\apps\re3_reg.rsc" "$(EPOCROOT)\epoc32\data\z\private\10003a3f\import\apps\re3_reg.rsc" - "!:\private\10003a3f\import\apps\re3_reg.rsc"
"$(EPOCROOT)\epoc32\data\z\resource\apps\re3.rsc" - "!:\resource\apps\re3.rsc" "$(EPOCROOT)\epoc32\data\z\resource\apps\re3.rsc" - "!:\resource\apps\re3.rsc"
"$(EPOCROOT)\epoc32\data\z\resource\apps\re3_icon.mif" - "!:\resource\apps\re3_icon.mif" "$(EPOCROOT)\epoc32\data\z\resource\apps\re3_icon.mif" - "!:\resource\apps\re3_icon.mif"

View file

@ -43,7 +43,7 @@ void CControllerConfigManager::MakeControllerActionsBlank()
} }
} }
#ifdef RW_GL3 #if defined RW_GL3 || defined RW_GLES1
int MapIdToButtonId(int mapId) { int MapIdToButtonId(int mapId) {
#ifdef __SYMBIAN32__ #ifdef __SYMBIAN32__
// TODO // TODO
@ -102,7 +102,7 @@ int32 CControllerConfigManager::GetJoyButtonJustDown()
if (m_NewState.rgbButtons[i] & 0x80 && !(m_OldState.rgbButtons[i] & 0x80)) if (m_NewState.rgbButtons[i] & 0x80 && !(m_OldState.rgbButtons[i] & 0x80))
return i + 1; return i + 1;
} }
#elif defined RW_GL3 #elif defined RW_GL3 || defined RW_GLES1
if (m_NewState.isGamepad) { if (m_NewState.isGamepad) {
for (int32 i = 0; i < MAX_BUTTONS; i++) { for (int32 i = 0; i < MAX_BUTTONS; i++) {
if (m_NewState.mappedButtons[i] && !(m_OldState.mappedButtons[i])) if (m_NewState.mappedButtons[i] && !(m_OldState.mappedButtons[i]))
@ -2773,7 +2773,7 @@ void CControllerConfigManager::UpdateJoyButtonState(int32 padnumber)
else else
m_aButtonStates[i] = false; m_aButtonStates[i] = false;
} }
#elif defined RW_GL3 #elif defined RW_GL3 || defined RW_GLES1
if (m_NewState.isGamepad) { if (m_NewState.isGamepad) {
for (int32 i = 0; i < MAX_BUTTONS; i++) { for (int32 i = 0; i < MAX_BUTTONS; i++) {
#if !defined __SYMBIAN32__ #if !defined __SYMBIAN32__

View file

@ -103,7 +103,7 @@ class CControllerState;
#define ACTIONNAME_LENGTH 40 #define ACTIONNAME_LENGTH 40
#ifdef RW_GL3 #if defined RW_GL3 || defined RW_GLES1
struct GlfwJoyState { struct GlfwJoyState {
int8 id; int8 id;
bool isGamepad; bool isGamepad;
@ -129,7 +129,7 @@ public:
}; };
bool m_bFirstCapture; bool m_bFirstCapture;
#if defined RW_GL3 #if defined RW_GL3 || defined RW_GLES1
GlfwJoyState m_OldState; GlfwJoyState m_OldState;
GlfwJoyState m_NewState; GlfwJoyState m_NewState;
#else #else
@ -219,8 +219,8 @@ public:
void ResetSettingOrder (e_ControllerAction action); void ResetSettingOrder (e_ControllerAction action);
}; };
#ifndef RW_GL3 #if !defined RW_GL3 && !defined RW_GLES1
VALIDATE_SIZE(CControllerConfigManager, 0x143C); VALIDATE_SIZE(CControllerConfigManager, 0x143C);
#endif #endif
extern CControllerConfigManager ControlsManager; extern CControllerConfigManager ControlsManager;

View file

@ -5138,7 +5138,7 @@ CMenuManager::ProcessButtonPresses(void)
ControlsManager.MakeControllerActionsBlank(); ControlsManager.MakeControllerActionsBlank();
ControlsManager.InitDefaultControlConfiguration(); ControlsManager.InitDefaultControlConfiguration();
ControlsManager.InitDefaultControlConfigMouse(MousePointerStateHelper.GetMouseSetUp()); ControlsManager.InitDefaultControlConfigMouse(MousePointerStateHelper.GetMouseSetUp());
#if !defined RW_GL3 #if !defined RW_GL3 && !defined RW_GLES1
if (AllValidWinJoys.m_aJoys[JOYSTICK1].m_bInitialised) { if (AllValidWinJoys.m_aJoys[JOYSTICK1].m_bInitialised) {
DIDEVCAPS devCaps; DIDEVCAPS devCaps;
devCaps.dwSize = sizeof(DIDEVCAPS); devCaps.dwSize = sizeof(DIDEVCAPS);

View file

@ -1124,7 +1124,7 @@ CRadar::LoadTextures()
|| (x2 < 1 && y2 == 1)) // one pixel on each side of second to first/last line is transparent || (x2 < 1 && y2 == 1)) // one pixel on each side of second to first/last line is transparent
pixels[x + y * 16] = 0; pixels[x + y * 16] = 0;
else if((x2 == 2 && y2 >= 2)|| (y2 == 2 && x2 >= 2) )// colored square inside else if((x2 == 2 && y2 >= 2)|| (y2 == 2 && x2 >= 2) )// colored square inside
#ifdef RW_GL3 #if defined RW_GL3 || defined RW_GLES1
pixels[x + y * 16] = WAYPOINT_R | (WAYPOINT_G << 8) | (WAYPOINT_B << 16) | (255 << 24); pixels[x + y * 16] = WAYPOINT_R | (WAYPOINT_G << 8) | (WAYPOINT_B << 16) | (255 << 24);
#else #else
pixels[x + y * 16] = WAYPOINT_B | (WAYPOINT_G << 8) | (WAYPOINT_R << 16) | (255 << 24); pixels[x + y * 16] = WAYPOINT_B | (WAYPOINT_G << 8) | (WAYPOINT_R << 16) | (255 << 24);

View file

@ -1140,6 +1140,8 @@ DisplayGameDebugText()
"D3D8 " "D3D8 "
#elif defined RW_GL3 #elif defined RW_GL3
"OpenGL " "OpenGL "
#elif defined RW_GLES1
"GLES1 "
#endif #endif
#if defined AUDIO_OAL #if defined AUDIO_OAL
"OAL " "OAL "
@ -1633,7 +1635,7 @@ Idle(void *arg)
if((!FrontEndMenuManager.m_bMenuActive || FrontEndMenuManager.m_bRenderGameInMenu) && if((!FrontEndMenuManager.m_bMenuActive || FrontEndMenuManager.m_bRenderGameInMenu) &&
TheCamera.GetScreenFadeStatus() != FADE_2) TheCamera.GetScreenFadeStatus() != FADE_2)
{ {
#if defined(GTA_PC) && !defined(RW_GL3) && defined(FIX_BUGS) #if defined(GTA_PC) && !defined(RW_GL3) && !defined(RW_GLES1) && defined(FIX_BUGS)
// This is from SA, but it's nice for windowed mode // This is from SA, but it's nice for windowed mode
if (!FrontEndMenuManager.m_bRenderGameInMenu) { if (!FrontEndMenuManager.m_bRenderGameInMenu) {
RwV2d pos; RwV2d pos;

View file

@ -56,7 +56,7 @@ int _caserename(const char *old_filename, const char *new_filename);
#define caserename _caserename #define caserename _caserename
#endif #endif
#ifdef RW_GL3 #if defined RW_GL3 || defined RW_GLES1
typedef struct typedef struct
{ {
#ifndef __SYMBIAN32__ #ifndef __SYMBIAN32__

View file

@ -9,8 +9,11 @@
#include <eikstart.h> #include <eikstart.h>
#include <hal.h> #include <hal.h>
#include <pthread.h> #include <pthread.h>
#include <gles2/gl2.h> #ifdef RW_GL3
#include <EGL/egl.h> #include <EGL/egl.h>
#else
#include <GLES/egl.h>
#endif
#include <locale.h> #include <locale.h>
#include <versioninfo.h> #include <versioninfo.h>
@ -356,13 +359,17 @@ public:
EGL_SAMPLES, 0, EGL_SAMPLES, 0,
EGL_COLOR_BUFFER_TYPE, EGL_RGB_BUFFER, EGL_COLOR_BUFFER_TYPE, EGL_RGB_BUFFER,
EGL_SURFACE_TYPE, EGL_WINDOW_BIT, EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
#ifdef SYMBIAN3
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT, EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
#endif
EGL_NONE EGL_NONE
}; };
eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY); eglDisplay = eglGetDisplay(EGL_DEFAULT_DISPLAY);
eglInitialize(eglDisplay, NULL, NULL); eglInitialize(eglDisplay, NULL, NULL);
#ifdef SYMBIAN3
eglBindAPI(EGL_OPENGL_ES_API); eglBindAPI(EGL_OPENGL_ES_API);
#endif
EGLint numConfigs; EGLint numConfigs;
eglChooseConfig(eglDisplay, attribs, &eglConfig, 1, &numConfigs); eglChooseConfig(eglDisplay, attribs, &eglConfig, 1, &numConfigs);

1
vendor/librw/rw.h vendored
View file

@ -25,3 +25,4 @@
#include "src/gl/rwgl3.h" #include "src/gl/rwgl3.h"
#include "src/gl/rwgl3shader.h" #include "src/gl/rwgl3shader.h"
#include "src/gl/rwgl3plg.h" #include "src/gl/rwgl3plg.h"
#include "src/gles1/rwgles1.h"

View file

@ -32,6 +32,8 @@ int32 build = 0xFFFF;
int32 platform = PLATFORM_WDGL; int32 platform = PLATFORM_WDGL;
#elif RW_GL3 #elif RW_GL3
int32 platform = PLATFORM_GL3; int32 platform = PLATFORM_GL3;
#elif RW_GLES1
int32 platform = PLATFORM_GLES1;
#elif RW_D3D9 #elif RW_D3D9
int32 platform = PLATFORM_D3D9; int32 platform = PLATFORM_D3D9;
#else #else

View file

@ -12,6 +12,7 @@
#include "ps2/rwps2.h" #include "ps2/rwps2.h"
#include "d3d/rwd3d.h" #include "d3d/rwd3d.h"
#include "gl/rwgl3.h" #include "gl/rwgl3.h"
#include "gles1/rwgles1.h"
#define PLUGIN_ID 1000 // TODO: find a better ID #define PLUGIN_ID 1000 // TODO: find a better ID

View file

@ -17,6 +17,7 @@
#include "d3d/rwd3d9.h" #include "d3d/rwd3d9.h"
#include "gl/rwgl3.h" #include "gl/rwgl3.h"
#include "gl/rwwdgl.h" #include "gl/rwwdgl.h"
#include "gles1/rwgles1.h"
#define PLUGIN_ID 0 #define PLUGIN_ID 0
@ -268,6 +269,8 @@ Engine::open(EngineOpenParams *p)
engine->device = ps2::renderdevice; engine->device = ps2::renderdevice;
#elif RW_GL3 #elif RW_GL3
engine->device = gl3::renderdevice; engine->device = gl3::renderdevice;
//#elif RW_GLES1 // TODO
// engine->device = gles1::renderdevice;
#elif RW_D3D9 #elif RW_D3D9
engine->device = d3d::renderdevice; engine->device = d3d::renderdevice;
#else #else

View file

@ -18,6 +18,7 @@
#include "d3d/rwd3d9.h" #include "d3d/rwd3d9.h"
#include "gl/rwwdgl.h" #include "gl/rwwdgl.h"
#include "gl/rwgl3.h" #include "gl/rwgl3.h"
#include "gles1/rwgles1.h"
#define PLUGIN_ID 2 #define PLUGIN_ID 2
@ -251,6 +252,10 @@ destroyNativeData(void *object, int32 offset, int32 size)
return d3d9::destroyNativeData(object, offset, size); return d3d9::destroyNativeData(object, offset, size);
if(geometry->instData->platform == PLATFORM_GL3) if(geometry->instData->platform == PLATFORM_GL3)
return gl3::destroyNativeData(object, offset, size); return gl3::destroyNativeData(object, offset, size);
#ifdef RW_GLES1
if(geometry->instData->platform == PLATFORM_GLES1)
return gles1::destroyNativeData(object, offset, size);
#endif
return object; return object;
} }

58
vendor/librw/src/gles1/rwgles1.cpp vendored Normal file
View file

@ -0,0 +1,58 @@
#include "rwgles1.h"
#ifdef RW_GLES1
namespace rw {
namespace gles1 {
// --- Funciones dummy (para linkear después) ---
inline void im2DRenderPrimitive(int, void*, int) {}
inline void im2DRenderIndexedPrimitive(int, void*, int, void*, int) {}
inline void im3DTransform(void*, int, void*, unsigned int) {}
inline void im3DRenderPrimitive(int) {}
inline void im3DRenderIndexedPrimitive(int, void*, int) {}
inline void im3DEnd(void) {}
// --- Driver lifecycle ---
static void*
driverOpen(void* object, int32 offset, int32 size)
{
// stub: no hace nada
return object;
}
static void*
driverClose(void* object, int32 offset, int32 size)
{
// stub: no hace nada
return object;
}
// --- Raster ---
static void
registerNativeRaster(void)
{
// stub por ahora
}
void
registerPlatformPlugins(void)
{
Driver::registerPlugin(PLATFORM_GLES1, 0, PLATFORM_GLES1,
driverOpen, driverClose);
registerNativeRaster();
}
void*
destroyNativeData(void *object, int32, int32)
{
//freeInstanceData((Geometry*)object);
return object;
}
}
}
#endif

108
vendor/librw/src/gles1/rwgles1.h vendored Normal file
View file

@ -0,0 +1,108 @@
#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include "../rwbase.h"
#include "../rwerror.h"
#include "../rwplg.h"
#include "../rwpipeline.h"
#include "../rwobjects.h"
#include "../rwengine.h"
#ifdef RW_GLES1
#include <GLES/gl.h>
#include <GLES/egl.h>
#ifdef __SYMBIAN32__
#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0
#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1
#define GL_COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2
#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
#endif
#endif
namespace rw {
#ifdef RW_GLES1
struct EngineOpenParams
{
int width, height;
const char *windowtitle;
};
#endif
namespace gles1 {
// --- Tipos básicos que charset.cpp y otros esperan ---
struct Im2DVertex {
float x, y, z, w;
float camZ;
float recipCamZ;
unsigned char r, g, b, a;
float u, v;
// --- setters esperados por librw ---
void setScreenX(float v) { x = v; }
void setScreenY(float v) { y = v; }
void setScreenZ(float v) { z = v; }
void setCameraZ(float v) { camZ = v; }
void setRecipCameraZ(float v) { recipCamZ = v; }
void setColor(unsigned char _r, unsigned char _g, unsigned char _b, unsigned char _a) {
r = _r; g = _g; b = _b; a = _a;
}
void setU(float val, float recipZ) { u = val; }
void setV(float val, float recipZ) { v = val; }
};
struct Im3DVertex {
float x, y, z;
float u, v;
uint32 color;
void setX(float v) { x = v; }
void setY(float v) { y = v; }
void setZ(float v) { z = v; }
void setU(float v) { u = v; }
void setV(float v) { this->v = v; }
void setColor(uint8 r, uint8 g, uint8 b, uint8 a) {
color = (a<<24) | (r<<16) | (g<<8) | b;
}
};
// --- Funciones dummy (para linkear después) ---
inline void im2DRenderPrimitive(int, void*, int);
inline void im2DRenderIndexedPrimitive(int, void*, int, void*, int);
inline void im3DTransform(void*, int, void*, unsigned int);
inline void im3DRenderPrimitive(int);
inline void im3DRenderIndexedPrimitive(int, void*, int);
inline void im3DEnd(void);
// --- Driver lifecycle ---
static void*
driverOpen(void* object, int32 offset, int32 size);
static void*
driverClose(void* object, int32 offset, int32 size);
// --- Raster ---
static void
registerNativeRaster(void);
void registerPlatformPlugins(void);
void *destroyNativeData(void *object, int32, int32);
}
}

View file

@ -9,6 +9,7 @@
#endif #endif
#ifdef __SYMBIAN32__ #ifdef __SYMBIAN32__
#undef stderr
#define stderr stdout #define stderr stdout
#endif #endif
@ -46,6 +47,11 @@
#define RW_OPENGL #define RW_OPENGL
#endif #endif
#ifdef RW_GLES1
//#define RW_OPENGL
#define RWDEVICE gles1
#endif
namespace rw { namespace rw {
#ifdef RW_PS2 #ifdef RW_PS2
@ -546,6 +552,7 @@ enum Platform
PLATFORM_WDGL = 11, // WarDrum OpenGL PLATFORM_WDGL = 11, // WarDrum OpenGL
PLATFORM_GL3 = 12, // my GL3 implementation PLATFORM_GL3 = 12, // my GL3 implementation
PLATFORM_GLES1 = 13,
NUM_PLATFORMS, NUM_PLATFORMS,

View file

@ -481,6 +481,10 @@ Texture::streamReadNative(Stream *stream)
return xbox::readNativeTexture(stream); return xbox::readNativeTexture(stream);
if(platform == PLATFORM_GL3) if(platform == PLATFORM_GL3)
return gl3::readNativeTexture(stream); return gl3::readNativeTexture(stream);
#ifdef RW_GLES1
// if(platform == PLATFORM_GLES1) // TODO
// return gles1::readNativeTexture(stream);
#endif
assert(0 && "unsupported platform"); assert(0 && "unsupported platform");
return nil; return nil;
} }
@ -498,6 +502,10 @@ Texture::streamWriteNative(Stream *stream)
xbox::writeNativeTexture(this, stream); xbox::writeNativeTexture(this, stream);
else if(this->raster->platform == PLATFORM_GL3) else if(this->raster->platform == PLATFORM_GL3)
gl3::writeNativeTexture(this, stream); gl3::writeNativeTexture(this, stream);
#ifdef RW_GLES1
// else if(this->raster->platform == PLATFORM_GLES1)
// gles1::writeNativeTexture(this, stream);
#endif
else else
assert(0 && "unsupported platform"); assert(0 && "unsupported platform");
} }
@ -515,6 +523,10 @@ Texture::streamGetSizeNative(void)
return xbox::getSizeNativeTexture(this); return xbox::getSizeNativeTexture(this);
if(this->raster->platform == PLATFORM_GL3) if(this->raster->platform == PLATFORM_GL3)
return gl3::getSizeNativeTexture(this); return gl3::getSizeNativeTexture(this);
#ifdef RW_GLES1
// if(this->raster->platform == PLATFORM_GLES1)
// return gles1::getSizeNativeTexture(this);
#endif
assert(0 && "unsupported platform"); assert(0 && "unsupported platform");
return 0; return 0;
} }