Oxygen Basic
Programming => Example Code => Topic started by: Aaron on March 07, 2014, 11:39:43 AM
-
Hello,
include "gp.inc"
OpenWindow 640,480,1
SetSmoothMode 2
single x,y,zx,zy,cx,cy,tp
sys im=510,z=120,it
h = GetHeight
w = GetWidth
For y=0 to <h
For x=0 to <w
zx=0
zy=0
cx= (x-w/2)/z
cy= (y-h/2)/z
it = im
While zx * zx + zy * zy < 4 and it>0
tp = zx * zx - zy * zy + cx
zy = 2 * zx * zy + cy
zx = tp
it -=1
Wend
SetPixel x,y, ARGB 255,it*12,it*8,it*4
Next
Next
Waitkey
CloseWindow
-
(http://files.allbasic.info/O2/mandelbrot.png)
Peter doesn't show the generation time but I'm guessing it' pretty close to SB. Then again this could be a Wine / GDI issue and under Windows it rather instant.
Update: Just tried it under my VirtualBox XP and it took only a couple seconds. (see attached)
Here is Peter's Mandelbrot converted to ScriptBasic GFX. The Mandelbrot fractal is like the Hello Surface for graphics programming.
(http://files.allbasic.info/ScriptBasic/gfx/sbgfxu64_mandelbrot.png)
' ScriptBasic GFX - Mandelbrot
IMPORT gfx.inc
s = gfx::Window(640,480,"ScriptBasic GFX Mandelbrot")
ts = gfx::Time()
im = 510
z = 120
h = 480
w = 640
FOR y = 0 TO h - 1
FOR x = 0 TO w - 1
zx = 0
zy = 0
cx = (x - w / 2) / z
cy = (y - h / 2) / z
it = im
WHILE zx * zx + zy * zy < 4 AND it > 0
tp = zx * zx - zy * zy + cx
zy = 2 * zx * zy + cy
zx = tp
it -= 1
WEND
gfx::PixelRGBA s, x, y, it * 12, it * 8, it * 4, 255
NEXT
NEXT
te = gfx::Time()
gfx::stringColor s, 20, 15, "Time: " & FORMAT("%.4f",(te-ts)/1000) & " Seconds." & CHR(0), 0x000000ff
gfx::Update
WHILE gfx::KeyName(1) <> "+escape"
WEND
gfx::Close
.
-
I'm guessing it' pretty close to SB.
once again a good joke! ;D
here is time.
include "gp.inc"
OpenWindow 640,480,1
SetSmoothMode 2
single x,y,zx,zy,cx,cy,tp
sys im=510,z=120,it
single t1,t2
h = GetHeight
w = GetWidth
t1 = ticks
For y=0 to <h
For x=0 to <w
zx=0
zy=0
cx= (x-w/2)/z
cy= (y-h/2)/z
it = im
While zx * zx + zy * zy < 4 and it>0
tp = zx * zx - zy * zy + cx
zy = 2 * zx * zy + cy
zx = tp
it -=1
Wend
SetPixel x,y, ARGB 255,it*12,it*8,it*4
Next
Next
t2 = ticks
t2 = (t2-t1)/1000
SetCaption "Time needed: " + t2
Waitkey
CloseWindow
.
-
Thanks for the Mandelbrot update Peter!
I have noticed that the WHILE/WEND in SB is much slower than a FOR/NEXT. Not sure why that is but something I thought I would mention.
Update: I tried a few different approaches to the WHILE/WEND loop. This loop is the crux of the fractal and doing it interpretively is painful.
-
I remembered that Charles did a DLLC helper function for the JAPI Mandelbrot ScriptBasic for Windows example. I hacked it a bit and got it working with the DLLC code I use for the alpha circle example. The colors are wrong (help resolving this appreciated) but the execution time has improved dramatically. The point of this is to show that bottlenecks in SB can be resolved with extension to the language.
(http://files.allbasic.info/ScriptBasic/gfx/sbgfxw32_mbrot_dllc.png)
' ScriptBasic GFX & DLLC - Mandelbrot
include "dllcinc.sb"
oxy = dllfile("/sb22/modules/oxygen.dll")
o2_basic = dllproc( oxy, "o2_basic i =(c*source) " )
o2_exec = dllproc( oxy, "o2_exec i =(i call) " )
o2_error = dllproc( oxy, "o2_error c*=() " )
o2_errno = dllproc( oxy, "o2_errno i =() " )
o2_len = dllproc( oxy, "o2_len i =() " )
o2_mode = dllproc( oxy, "o2_mode (i mode) " )
dllcall(o2_mode,1)
src = """
extern
function mandel(float zre,zim,sys maxiter) as sys
float mx,my,betrag
sys iter
while iter < maxiter and betrag < 4.0
iter = iter+1
tmp = mx*mx-my*my+zre
my = 2*mx*my+zim
mx = tmp
betrag = (mx*mx + my*my)
wend
return iter
end function
sub finish()
terminate
end sub
function link(sys n) as sys
select n
case 0
return @finish
case 1
return @mandel
end select
end function
end extern
addr link
"""
dllcall(o2_basic, src)
dfn = dllcall(o2_exec,0)
mandel = dllproc(dfn,"mandel i = (f zre, f zim, i maxiter)", dllcald(dfn, 1))
finish = dllproc(dfn,"finish ()", dllcald(dfn, 0))
gfx = dllfile("SDL_gfx.dll")
sdl = dllfile("sdl.dll")
SDL_INIT = dllproc(sdl, "SDL_Init i = (i flags)")
SDL_WINDOW = dllproc(sdl, "SDL_SetVideoMode i = (i width, i height, i video_bpp, i videoflags)")
SDL_SETALPHA = dllproc(sdl, "SDL_SetAlpha i = (i surface, i flag, i alpha)")
SDL_TITLE = dllproc(sdl, "SDL_WM_SetCaption (z title, z icon)")
SDL_WAIT = dllproc(sdl, "SDL_Delay (i millsecs)")
SDL_TIME = dllproc(sdl, "SDL_GetTicks i = ()")
SDL_CLIPRECT = dllproc(sdl, "SDL_SetClipRect (i surface, i* rect)")
GFX_PIXEL = dllproc(gfx, "pixelRGBA i = (i surface, i x, i y, i r, i g, i b, i a)")
SDL_FLIP = dllproc(sdl, "SDL_Flip i = (i screen(")
GFX_PRINT = dllproc(gfx, "stringColor i = (i dst, i x, i y, c *s, i color)")
SDL_QUIT = dllproc(sdl, "SDL_Quit ()")
GLOBAL CONST SDL_INIT_VIDEO = 0x00000020
GLOBAL CONST SDL_SWSURFACE = 0x00000000
GLOBAL CONST SDL_SRCALPHA = 0x00010000
GLOBAL CONST SDL_RESIZABLE = 0x00000010
flags = SDL_SWSURFACE OR SDL_SRCALPHA OR SDL_RESIZABLE
dllcall(SDL_INIT, SDL_INIT_VIDEO)
screen = dllcall(SDL_WINDOW, 640, 480, 0, flags)
ok = dllcall(SDL_SETALPHA, screen, SDL_SRCALPHA, 0)
dllcall(SDL_TITLE, "ScriptBasic GFX & DLLC - Mandelbrot", 0)
ts = dllcall(SDL_TIME)
im = 510
z = 120
h = 480
w = 640
FOR y = 0 TO h -1
FOR x = 0 TO w -1
zx = 0
zy = 0
cx = (x - w / 2) / z
cy = (y - h / 2) / z
it = dllcall(mandel,cx,cy, im)
dllcall(GFX_PIXEL, screen, x, y, it * 12, it * 8, it * 4, 255)
NEXT
NEXT
te = dllcall(SDL_TIME)
dllcall(GFX_PRINT, screen, 20, 15, "Time: " & FORMAT("%.4f",(te-ts)/1000) & " Seconds." & CHR(0), 0xffffffff)
dllcall(SDL_FLIP, screen)
LINE INPUT WAIT
dllcall(SDL_QUIT)
-
Hi John,
I think what I see is a reversed colour.
( it *12, it * 8, it *4, 255 ) = ( it*4, it*8,it*12, 255 )
But does not look bad!
-
Peter,
You got it in the color ballpark but it's still off. I added SDL_CLS to make sure the backgound was black. Any other ideas?
' ScriptBasic GFX & DLLC - Mandelbrot
include "dllcinc.sb"
oxy = dllfile("/sb22/modules/oxygen.dll")
o2_basic = dllproc( oxy, "o2_basic i =(c*source) " )
o2_exec = dllproc( oxy, "o2_exec i =(i call) " )
o2_error = dllproc( oxy, "o2_error c*=() " )
o2_errno = dllproc( oxy, "o2_errno i =() " )
o2_len = dllproc( oxy, "o2_len i =() " )
o2_mode = dllproc( oxy, "o2_mode (i mode) " )
dllcall(o2_mode,1)
src = """
extern
function mandel(float zre,zim,sys maxiter) as sys
float mx,my,betrag
sys iter
while iter < maxiter and betrag < 4.0
iter = iter+1
tmp = mx*mx-my*my+zre
my = 2*mx*my+zim
mx = tmp
betrag = (mx*mx + my*my)
wend
return iter
end function
sub finish()
terminate
end sub
function link(sys n) as sys
select n
case 0
return @finish
case 1
return @mandel
end select
end function
end extern
addr link
"""
dllcall(o2_basic, src)
dfn = dllcall(o2_exec,0)
mandel = dllproc(dfn,"mandel i = (f zre, f zim, i maxiter)", dllcald(dfn, 1))
finish = dllproc(dfn,"finish ()", dllcald(dfn, 0))
gfx = dllfile("SDL_gfx.dll")
sdl = dllfile("sdl.dll")
SDL_INIT = dllproc(sdl, "SDL_Init i = (i flags)")
SDL_WINDOW = dllproc(sdl, "SDL_SetVideoMode i = (i width, i height, i video_bpp, i videoflags)")
SDL_SETALPHA = dllproc(sdl, "SDL_SetAlpha i = (i surface, i flag, i alpha)")
SDL_TITLE = dllproc(sdl, "SDL_WM_SetCaption (z title, z icon)")
SDL_WAIT = dllproc(sdl, "SDL_Delay (i millsecs)")
SDL_TIME = dllproc(sdl, "SDL_GetTicks i = ()")
SDL_CLIPRECT = dllproc(sdl, "SDL_SetClipRect (i surface, i* rect)")
GFX_PIXEL = dllproc(gfx, "pixelRGBA i = (i surface, i x, i y, i r, i g, i b, i a)")
SDL_FLIP = dllproc(sdl, "SDL_Flip i = (i screen)")
SDL_CLS = dllproc(sdl, "SDL_FillRect i = (i surface, i* dstrect, i color)")
GFX_PRINT = dllproc(gfx, "stringColor i = (i dst, i x, i y, c *s, i color)")
SDL_QUIT = dllproc(sdl, "SDL_Quit ()")
GLOBAL CONST SDL_INIT_VIDEO = 0x00000020
GLOBAL CONST SDL_SWSURFACE = 0x00000000
GLOBAL CONST SDL_SRCALPHA = 0x00010000
GLOBAL CONST SDL_RESIZABLE = 0x00000010
flags = SDL_SWSURFACE OR SDL_SRCALPHA OR SDL_RESIZABLE
dllcall(SDL_INIT, SDL_INIT_VIDEO)
screen = dllcall(SDL_WINDOW, 640, 480, 0, flags)
ok = dllcall(SDL_SETALPHA, screen, SDL_SRCALPHA, 0)
dllcall(SDL_TITLE, "ScriptBasic GFX & DLLC - Mandelbrot", 0)
dllcall(SDL_CLS, screen, 0, 0x000000)
ts = dllcall(SDL_TIME)
im = 510
z = 120
h = 480
w = 640
FOR y = 0 TO h -1
FOR x = 0 TO w -1
zx = 0
zy = 0
cx = (x - w / 2) / z
cy = (y - h / 2) / z
it = dllcall(mandel,cx,cy, im)
dllcall(GFX_PIXEL, screen, x, y, it * 4, it * 8, it * 12, 255)
NEXT
NEXT
te = dllcall(SDL_TIME)
dllcall(GFX_PRINT, screen, 20, 15, "Time: " & FORMAT("%.4f",(te-ts)/1000) & " Seconds." & CHR(0), 0xffffffff)
dllcall(SDL_FLIP, screen)
LINE INPUT WAIT
dllcall(SDL_QUIT)
.
-
I think every pixel on the screen is colored by the Mandelbrot program and using a black or white background makes no difference.
-
Yes, that's right.
include "ss.inc"
Window 640,480,1
single x,y,zx,zy,cx,cy,tp
sys im=510,z=120,it
single t1,t2
h = GetHeight
w = GetWidth
't1 = ticks
For y=0 to <h
For x=0 to <w
zx=0
zy=0
cx= (x-w/2)/z
cy= (y-h/2)/z
it = im
While zx * zx + zy * zy < 4 and it>0
tp = zx * zx - zy * zy + cx
zy = 2 * zx * zy + cy
zx = tp
it -=1
Wend
SetPixel x,y, RGB it*4,it*8,it*12
Next
Next
't2 = ticks
't2 = (t2-t1)/1000
SetCaption "Time needed: " + t2
Waitkey
Quit
.
-
The only thing that has changed is I'm using the Mandelbrot Charles wrote which may be effecting how colors are chosen.
BTW I noticed the colors of your latest version now look more like the SB original version (less pink) and it runs another magnitude faster. I see your using SDL. Welcome to the club!
-
Solved.
(http://files.allbasic.info/ScriptBasic/gfx/sbgfxdllc_mandelbrot.png)
' ScriptBasic GFX & DLLC - Mandelbrot
include "dllcinc.sb"
oxy = dllfile("/sb22/modules/oxygen.dll")
o2_basic = dllproc( oxy, "o2_basic i =(c*source) " )
o2_exec = dllproc( oxy, "o2_exec i =(i call) " )
o2_error = dllproc( oxy, "o2_error c*=() " )
o2_errno = dllproc( oxy, "o2_errno i =() " )
o2_len = dllproc( oxy, "o2_len i =() " )
o2_mode = dllproc( oxy, "o2_mode (i mode) " )
dllcall(o2_mode,1)
src = """
extern
FUNCTION mandel(float cx,cy,sys it) as sys
float zx,zy,tp
WHILE zx * zx + zy * zy < 4 AND it > 0
tp = zx * zx - zy * zy + cx
zy = 2 * zx * zy + cy
zx = tp
it -= 1
WEND
return it
END FUNCTION
sub finish()
terminate
end sub
function link(sys n) as sys
select n
case 0
return @finish
case 1
return @mandel
end select
end function
end extern
addr link
"""
dllcall(o2_basic, src)
dfn = dllcall(o2_exec,0)
mandel = dllproc(dfn,"mandel i = (f zre, f zim, i maxiter)", dllcald(dfn, 1))
finish = dllproc(dfn,"finish ()", dllcald(dfn, 0))
gfx = dllfile("SDL_gfx.dll")
sdl = dllfile("sdl.dll")
SDL_INIT = dllproc(sdl, "SDL_Init i = (i flags)")
SDL_WINDOW = dllproc(sdl, "SDL_SetVideoMode i = (i width, i height, i video_bpp, i videoflags)")
SDL_SETALPHA = dllproc(sdl, "SDL_SetAlpha i = (i surface, i flag, i alpha)")
SDL_TITLE = dllproc(sdl, "SDL_WM_SetCaption (z title, z icon)")
SDL_WAIT = dllproc(sdl, "SDL_Delay (i millsecs)")
SDL_TIME = dllproc(sdl, "SDL_GetTicks i = ()")
SDL_CLIPRECT = dllproc(sdl, "SDL_SetClipRect (i surface, i* rect)")
GFX_PIXEL = dllproc(gfx, "pixelRGBA i = (i surface, i x, i y, i r, i g, i b, i a)")
SDL_FLIP = dllproc(sdl, "SDL_Flip i = (i screen)")
SDL_CLS = dllproc(sdl, "SDL_FillRect i = (i surface, i* dstrect, i color)")
GFX_PRINT = dllproc(gfx, "stringColor i = (i dst, i x, i y, c *s, i color)")
SDL_QUIT = dllproc(sdl, "SDL_Quit ()")
GLOBAL CONST SDL_INIT_VIDEO = 0x00000020
GLOBAL CONST SDL_SWSURFACE = 0x00000000
GLOBAL CONST SDL_SRCALPHA = 0x00010000
GLOBAL CONST SDL_RESIZABLE = 0x00000010
flags = SDL_SWSURFACE OR SDL_SRCALPHA OR SDL_RESIZABLE
dllcall(SDL_INIT, SDL_INIT_VIDEO)
screen = dllcall(SDL_WINDOW, 640, 480, 0, flags)
ok = dllcall(SDL_SETALPHA, screen, SDL_SRCALPHA, 0)
dllcall(SDL_TITLE, "ScriptBasic GFX & DLLC - Mandelbrot", 0)
ts = dllcall(SDL_TIME)
im = 510
z = 120
h = 480
w = 640
FOR y = 0 TO h -1
FOR x = 0 TO w -1
zx = 0
zy = 0
cx = (x - w / 2) / z
cy = (y - h / 2) / z
it = dllcall(mandel,cx,cy, im)
dllcall(GFX_PIXEL, screen, x, y, it * 12, it * 8, it * 4, 255)
NEXT
NEXT
te = dllcall(SDL_TIME)
dllcall(GFX_PRINT, screen, 20, 15, "Time: " & FORMAT("%.4f",(te-ts)/1000) & " Seconds." & CHR(0), 0x000000FF)
dllcall(SDL_FLIP, screen)
LINE INPUT WAIT
dllcall(SDL_QUIT)
-
Linux ScriptBasic got jealous. :)
With this generation speed, (and double buffering) I bet with a little more effort I could have a usable pan and zoom version of this. I removed the color modifiers and attached a B&W version.
The Mandelbrot iterator function will be included in the next ScriptBasic GFX extension module build for Linux and Windows.
(http://files.allbasic.info/ScriptBasic/gfx/sbgfxu64_mandelbrot2.png)
' ScriptBasic GFX - Mandelbrot
IMPORT gfx.inc
s = gfx::Window(640,480,"ScriptBasic GFX Mandelbrot")
ts = gfx::Time()
FOR y = 0 TO 479
FOR x = 0 TO 639
cx = (x - 320) / 120
cy = (y - 240) / 120
rit = gfx::Mandelbrot(cx, cy, 510)
gfx::PixelRGBA s, x, y, rit * 12, rit * 8, rit * 4, 255
NEXT
NEXT
te = gfx::Time()
gfx::stringColor s, 20, 15, "Time: " & FORMAT("%.4f",(te-ts)/1000) & " Seconds." & CHR(0), 0x000000ff
gfx::Update
WHILE gfx::KeyName(1) <> "+escape"
WEND
gfx::Close
interface.c (SB GFX ext. module)
besFUNCTION(gfx_Mandelbrot)
DIM AS double cx, cy, zx, zy, tp;
DIM AS int iter;
besARGUMENTS("rri")
AT cx, AT cy, AT iter
besARGEND
DEF_WHILE (zx * zx + zy * zy < 4 AND iter > 0)
BEGIN_WHILE
tp = zx * zx - zy * zy + cx;
zy = 2 * zx * zy + cy;
zx = tp;
iter = iter - 1;
WEND
besRETURN_LONG(iter);
besEND
.
-
Peter,
Can you let us know what license if any applies to using your libraries? It would be a shame for someone to invest a lot of time into their project using your libraries to find out they can't without prior approval. If you have no plans to profit from your efforts, why not make them open source and maximize the benefit to others with your fine efforts?
I hope you continue on the SDL trail as it applies to more than just Windows.
I'm guessing it' pretty close to SB.
once again a good joke! ;D
here is time.
I wasn't joking. The SB and O2 version of the Mandelbrot are within a second of each other. Arguing further is spiting hairs. I have said for years that with todays hardware, interpreters can hold there own. When a CPU intensive task rolls around, having a simple way to turn the task into a C function to eliminate the interpretive bottle neck seems like the best of both worlds. In my mind portability and ease of use have priority and shoring up the code with C functions when needed solves all my long term goals.
John
-
Can you let us know what license if any applies to using your libraries?
Hello John,
You can use all the libraries, there is no licence for those libraries.
Whatever you do therewith, (commercial or own projects or garbage can) do it!
Of course, the libraries are on your risk to use! Do not worry, they are oxygen stable.
Have I more to say?
Hu, you are liking Sdl! Yes I stay with Sdl, and have made a small library today.
And again, it's absolutly free! Still no GetPixel, but I think is comming soon.
If you have difficulties reading this horrible English, then simply learn German!
Some sdl demo:
include "ss.inc"
OpenWindow 640,480,1
f1 = LoadFont "textfonts/bne.ttf",28,2
f2 = LoadFont "textfonts/choco.ttf",48,0
sys a, x
p = LoadImage "png/banana.png",1
m = LoadTile "png/fontc.png",16,6
while KeyDown(27)=0
Cls 255,190,0
TileText m,100,50,"OXYSDL"
DrawImage p,200,200,0
DrawText f1, 200, 0,"Hello Banana", RGB(0,55,255)
DrawText f2, 200,100,"Hello Banana", RGB(0,100,255)
DrawText f1,0,0, xMouse + " " + yMouse,0
Color(0,0,255,255)
DrawRoundRect 500,200,40,40,8
DrawTriangle 400,200,350,250,450,250
FillTriangle 400,300,350,250,450,250
Color(0,255,255,255)
FillRoundRect 500,100,40,40,4
Color(255,0,0,255)
DrawLine 0,400,639,400
Color(0,0,255,255)
ThickLine 0,310,639,310,6
Color(255,0,0,155)
FillEllipse 300,300,40,60
Color(0,0,255,255)
DrawEllipse 400,400,60,20
Color(0,0,255,255)
DrawPoint 320,240,10
Color(0,255,0,155)
FillCircle x,100,20
FillCircle 50,258,30
Color(20,170,16,255)
DrawCircle(200,180,40)
Color(255,0,0,200)
DrawRect 100,100,50,50
FillRect 300,100,50,50
x +=1
if x >=620 then x=0
if KeyPressed()=1
DrawText f1,10,350,"WHAT WANTED YOU SAY?",0
end if
Redraw()
Wait (2)
wend
CloseWindow()
.
-
include "ss.inc"
OpenWindow 640,480,1
sys cx[100],cy[100],cd[100],cr[100],cs[100]
sys cr[100],cg[100],cb[100],ca[100]
For c=1, 100
cx[c]=310
cy[c]=230
cd[c]=Rnd(1,8)
cs[c]=Rnd(20,30)
cr[c]=Rnd(64,255)
cg[c]=Rnd(64,255)
cb[c]=Rnd(64,255)
ca[c]=Rnd(64,255)
Next
Sub Circles()
For m=1, 100
Color(cr[m],cg[m],cb[m],ca[m])
FillCircle cx[m],cy[m],cs[m]
Next
End Sub
Sub Bound()
For x=1, 100
if cx[x] <=10 then
cd[x] = Rnd(1,9)
cx[x] =10
end if
if cx[x] >=620 then
cd[x] = Rnd(1,9)
cx[x] =620
end if
if cy[x] >=460 then
cd[x] = Rnd(1,9)
cy[x] =460
end if
if cy[x] <=10 then
cd[x] = Rnd(1,9)
cy[x] =10
end if
Next
End Sub
while KeyDown(27)=0
cls 0,0,0
for c=1, 100
if cd[c]=1 then
cx[c]=cx[c]+1
Bound()
elseif cd[c]=2 then
cx[c]=cx[c]-1
Bound()
elseif cd[c]=3 then
cy[c]=cy[c]-1
Bound()
elseif cd[c]=4 then
cy[c]=cy[c]+1
Bound()
elseif cd[c]=5 then
cy[c]=cy[c]-1
cx[c]=cx[c]-1
Bound()
elseif cd[c]=6 then
cy[c]=cy[c]-1
cx[c]=cx[c]+1
Bound()
elseif cd[c]=7 then
cy[c]=cy[c]+1
cx[c]=cx[c]-1
Bound()
elseif cd[c]=8 then
cy[c]=cy[c]+1
cx[c]=cx[c]+1
Bound()
end if
Next
Circles
Redraw
Wait 2
wend
CloseWindow
-
If you have difficulties reading this horrible English, then simply learn German!
You're English is better than Aurel's if that is saying anything. As long as your code doesn't start looking German, I'm happy. :)
-
Are you only supporting the main surface with your SDL lib?
-
Are you only supporting the main surface with your SDL lib?
yes, only one surface.
-
On a positive note, at least there is motivation to figure out how to get the alpha channel for a pixel from the main surface. ;)
-
Looking good Peter!
FWIW: I get a Wine exception error trying to run this. I have had good luck with O2 based apps in the past on Wine. Here is the Wine Backtrace Report (http://files.allbasic.info/O2/ss_backtrace.txt) if it is of any help.
::) PE 6a0c0000-6a0e2000 Deferred sdl_gfx
(http://files.allbasic.info/O2/peter_sdl_demo.png)
-
The circles demo is very cool and using a single surface. Amazing. It looks like SDL is your calling. 8)
I wish you would at least make the SDL (ss.dll) source available so I could pick up a few of your tricks. I have made the Script BASIC GFX extension module source available which you are welcome to use in anyway you like.
-
PE 6a0c0000-6a0e2000 Deferred sdl_gfx
Hi John,
No clue what this means, I have no Linux-wine here.
With Window7 runs it fine. It is the king under all the operation systems.
-
Are you using the SDL_gfx library for your ss.dll?
-
I changed Peter's default color modifiers and I vote this to be the new standard. :)
gfx::PixelRGBA s, x, y, rit * 32, rit * 16, rit * 8, 255
(http://files.allbasic.info/ScriptBasic/gfx/new_mandelbrot_u64.png)
I just compiled and tested the latest Script BASIC GFX extension module for Windows 32 and it worked perfect on XP and Wine. (see attached)
.