ON ERROR IF ERR=17 CHAIN @lib$+"../examples/tools/touchide" ELSE MODE 3 : PRINT REPORT$ : END VDU 23,22,640;500;16,20,16,128+8 OFF SYS "SDL_GetCurrentVideoDriver" TO vd%% PRINT " Current video driver: """ $$vd%% """" IF @platform% AND &40 THEN DIM ri{name%%, flags%, nformats%, texture%(15), maxw%, maxh%} ELSE DIM ri{name%, flags%, nformats%, texture%(15), maxw%, maxh%} ENDIF SYS "SDL_GetNumRenderDrivers" TO ndrivers% PRINT '" Available renderers:" FOR I% = 0 TO ndrivers%-1 SYS "SDL_GetRenderDriverInfo", I%, ri{} PRINT I%; ": " $$ri.name% NEXT PRINT IF @platform% AND &40 THEN DIM pf{format%, pad%, palette%%, BitsPerPixel&, BytesPerPixel&, \ \ pad&(1), Rmask%, Gmask%, Bmask%, Amask%, internal&(19)} ELSE DIM pf{format%, palette%, BitsPerPixel&, BytesPerPixel&, \ \ pad&(1), Rmask%, Gmask%, Bmask%, Amask%, internal&(15)} ENDIF SYS "SDL_GetRendererInfo", @memhdc%, ri{} PRINT " Current renderer name: """ $$ri.name% """" PRINT " Current renderer flags: &"; ~ri.flags% SYS "SDL_GetHintBoolean", "SDL_RENDER_BATCHING", 0, @memhdc% TO batch% PRINT " Render batching enabled: "; IF @platform% >= &2000A00 IF batch% THEN PRINT "Yes" ELSE PRINT "No" PRINT " Supported pixel formats:" FOR I% = 0 TO ri.nformats%-1 IF @platform% AND &40 THEN SYS "SDL_AllocFormat", ri.texture%(I%) TO ](^pf{}+8) ELSE SYS "SDL_AllocFormat", ri.texture%(I%) TO !(^pf{}+4) ENDIF PRINT I%; ": &" ; ~ ri.texture%(I%); IF pf{} THEN PRINT " (" FNrgba$(pf.Rmask%, pf.Gmask%, pf.Bmask%, pf.Amask%) ")" SYS "SDL_FreeFormat", pf{} ELSE A% = ri.texture%(I%) : B% = 0 PRINT " (" $$^A% ")" ENDIF NEXT PRINT " Maximum width (pixels) = "; ri.maxw% PRINT " Maximum height (pixels) = "; ri.maxh% SYS "SDL_GetWindowPixelFormat", @hwnd% TO pf% IF @platform% AND &40 THEN SYS "SDL_AllocFormat", pf% TO ](^pf{}+8) ELSE SYS "SDL_AllocFormat", pf% TO !(^pf{}+4) ENDIF PRINT PRINT " Pixel format = &"; ~pf%; PRINT " (" FNrgba$(pf.Rmask%, pf.Gmask%, pf.Bmask%, pf.Amask%) ")" PRINT " BitsPerPixel = "; pf.BitsPerPixel& " (" ; pf.BytesPerPixel& " bytes)" CASE @platform% AND &F OF WHEN 3,4: SYS "SDL_GL_GetDrawableSize", @hwnd%, ^W%, ^H%, @memhdc% PRINT " Screen size = "; W% " x "; H% " pixels" OTHERWISE: DIM SDL_DisplayMode{format%, w%, h%, refresh_rate%, driverdata%%} SYS "SDL_GetDesktopDisplayMode", 0, SDL_DisplayMode{} PRINT " Desktop size = "; SDL_DisplayMode.w% " x "; SDL_DisplayMode.h% " pixels" ENDCASE DIM h%(499) PRINT TAB(1,24) "Measuring frame rate, please wait..."; T% = TIME I% = 0 @% = &2010A REPEAT *refresh O% = T% T% = TIME h%(I% MOD 500) = T%-O% I% += 1 IF I% >= 500 IF (I% MOD 60) = 0 THEN PRINT TAB(1,24) "Achievable frame rate approx. "; 50000 / SUM(h%()) ; " fps"; ENDIF UNTIL FALSE DEF FNrgba$(r%, g%, b%, a%) LOCAL r$, g$, b$, a$ r$ = "R" : g$ = "G" : b$ = "B" : a$ = "A" IF (r%>>>1) < (g%>>>1) SWAP r%,g% : SWAP r$,g$ IF (r%>>>1) < (b%>>>1) SWAP r%,b% : SWAP r$,b$ IF (r%>>>1) < (a%>>>1) SWAP r%,a% : SWAP r$,a$ IF (g%>>>1) < (b%>>>1) SWAP g%,b% : SWAP g$,b$ IF (g%>>>1) < (a%>>>1) SWAP g%,a% : SWAP g$,a$ IF (b%>>>1) < (a%>>>1) SWAP b%,a% : SWAP b$,a$ IF r% = 0 r$ = "" IF g% = 0 g$ = "" IF b% = 0 b$ = "" IF a% = 0 a$ = "" = r$ + g$ + b$ + a$ + FNbits(r%) + FNbits(g%) + FNbits(b%) + FNbits(a%) DEF FNbits(M%) LOCAL N% IF M% = 0 THEN = "" WHILE (M% AND 1) = 0 M% = M% >>> 1 : ENDWHILE WHILE M% AND 1 M% = M% >>> 1 : N% += 1 : ENDWHILE = STR$(N%)