Ah sure. It might work with 8 bit graphics.
Is your engine publicly available? If so, then where? I wouldn't mind doing some experimenting with it.
its in sourceforge for amiblitz 3.it work in amiblitz 3, there is a demo in the amiblitz3/sourcecodes/includes/gl.bb2 include.
amiblitz execute the example if the file is not include and is use standalone.
see here the syntax of that example program.its easy to bring 2d games to 3d, because you can choose a virtual coordinate system.I decide to use stormmesa, but native PPC stormmesa do not work with new OS4 warp3d.because OS4 devs remove a feature in warp3d that stormmesa need.If it work on MOS, i dont know, because no intrestet user have MOS and want test.
The code below produce this testimage.later version should load milkshape objects make out of 2d easy 3d with depthmap etc.but because stormmesa is not go to a standard GL API, i give up, because i dont want do special native versions.and thilo do continue his 2d engine
CNIF #__include=0
;Amiblitz 2 test for opengl
Syntax 2 ;the relax declare mode
optimize 7
WBStartup
.begin
width.l=320:height.l=200
gl_init{width,height,16,0} ;the screen open
gl_2dview{640,480} ;need to set coord leftedge=0 rightedge=640 and hold size of pics
;depent on this resolution
;topedge=0 and buttom edge=480
;on default ogl use leftedge=-1 rightedge+1 top +1 buttom -1
gl_load {0,"data/pattern"}
; Stop
gl_load {1,"data/ball64x64",0}
gl_load {2,"data/reflect.jpg",0}
gl_load {3,"data/times32.png",0}
gl_sphere {4,40,0,15,15} ;create the sphere at beginning for more speed.But possible on all place
gl_cylinder{5,110,30,50,0,15,15} ;a cylinder with texture 0
gl_cylinder{6,110,30,50,2,15,15} ;another cylinder for the reflection with texture2
gl_quad{7,50,50,50,0}
gl_quad{8,50,50,50,2}
.startvals
zval.f=0:xval.f=320:yval.f=240:trans.f=255:yvallight.f=yval:rot.f=6:tsize.f=1:rot.f=84
Repeat
ev.l = Event
Select ev
Case #IDCMP_RAWKEY
Select EventCode
Case $4e : xval+10
Case $4f : xval-10
Case $4c : yval-10
Case $4d : yval+10
Case $13 : rot.f+6
Case $45 : ev=#IDCMP_CLOSEWINDOW
End Select
Select EventVanillaKey
Case @"q" : zval-10
Case @"a" : zval+10
Case @"t" : trans.f+10
Case @"g" : trans.f-10
Case @"m" : tpos.l+2
Case @"Q" : yvallight.f-10
Case @"A" : yvallight+10
Case @"s" : tsize.f*1.01
Case @"S" : tsize.f*0.99
;Case @"r" : rot.f+6
End Select
End Select
FlushEvents
;If light Then glEnable_ #GL_LIGHTING: Else glDisable_ #GL_LIGHTING
;this example Show all what is possible with that 3dlib
gl_blit{0,xval,yval} ;simple blit a image
gl_light{ 0,320,yvallight,0,255,255,160} ;switch on a yellow spotlight
gl_color{255,150,150} ;tint texture red
;blit this image
gl_texcoord{0,tpos,0,128*tsize,128*tsize} ;for scroll the texture with m key
gl_blit{0,xval+128,yval} ;and blit
gl_light{0} ;now use the default light.
gl_blit{1,200,yval,zval,-1,0,0,rot} ;another image but rotatable -1 mean make that not transparent
;now blit a reflective object
gl_blit{7,xval-128,yval-128,zval,-1,rot+15,rot+15,0}
gl_texmode{3} ;now switch on the spherical mode for the reflect effect
gl_blit{8,xval-128,yval-128,zval,255,rot+15,rot+15,0} ;blit the reflection map
gl_light{ 0,220,yvallight,0,255,255,160} ;switch on a yellow spotlight for the font
gl_usefont {3,32,32,0.3} ;use picture 3 with 32*32 tile and scale the font by 0.5
gl_textcolor {220,220,220,200} ;we dont want the color of the bitmap
gl_print{"test",48,200} ;print 2 lines
gl_nprint{" 2. Part"} ;print 2 lines
gl_textcolor {0,200,255} ;change color again
gl_print{"This is a line scale to 0.4",65,230,0.4}
gl_light{0} ;default light
gl_color{160} ;make 2. ball a little darker only 1 color mean r g and b is set to 160
gl_scale{2.4,1.0,1.0} ;size the ball in x
gl_blit{1,300,yval,zval,trans,0,0,rot} ;make the ball transparent choose with g and t
gl_blit{4,300,100,0,-1,rot}
gl_color{255,200,0}
gl_scale{0.3,1,1}
gl_blit{4,320,250,zval,-1,-1,rot,-1} ;blit another sphere but diffrent color and size
gl_color{140,70,140} ;blit a reflective cone
gl_scale{0.5,1,1}
gl_blit{5,180,370,zval,-1,-1,rot,-1}
gl_scale{0.5,1,1}
gl_texmode{3}
gl_blit{6,180,370,zval,255,-1,rot,-1}
gl_texmode{3}
gl_blit{6,320,270,zval,150,-1,rot,-1} ;blit the transparency cone
gl_nprint{"Key r=Rotate "+Str$(rot),360,0}
gl_nprint{"m=Move Texture",360}
gl_nprint{"s=Size Texture",360}
gl_nprint{"Crsr = move",360}
gl_nprint{"q = z +",360}
gl_nprint{"a = z -",360}
gl_nprint{"Q = Light y +",360}
gl_nprint{"A = Light y -",360}
Delay_ 1
gl_show {} ;show the render and clear all realtime effects (it call gl_reset)
Until ev=#IDCMP_CLOSEWINDOW
End
CEND