Hello,
How are you !?
My name is Dr FLoyd, french "casual" coder ! :)
Some of my games in BLTZ3D
http://www.gamopat-forum.com/t66372-termine-crash-time-plumber-deluxe-edition-pc
http://www.gamopat-forum.com/t93454-termine-supa-zazai-da
I am about to finish my new game in BLITZ 3D... in full 2D :
http://www.gamopat-forum.com/t99730-new-cosmos-the-secret-melody-sortie-mi-decembre-2018
But this time my game is in 320x240 pixels ! So Windowed only... Our screens do not accept this resolution.
Is there a possibility/tips to transform the game in fullscreen ???? Virtualisation ?
Thank you for your help
PS : in the past, I have already see that but It was complicate :
http://www.mojolabs.nz/posts.php?topic=95702
..hello man...everything is possible here...welcome mann..
@drfloyd>>i have posted a code example to do exactly that,
the idea was to stretch a 320x200 image on a quad mesh (using a texture and specific UVs), the code is somewhere on this forum...
https://www.syntaxbomb.com/index.php/topic,3658.327.html (#327)
i have used this method for the 320x200 compo last year... see : https://www.syntaxbomb.com/index.php/topic,3991.0.html
Hello,
with blitzbasic, you can setup low res graphic mode, but use hardware stretching to make the window size bigger.
To do this you would set, first the desired window size e.g 800x600. Then you set the Graphic mode of 320x200. This will be resized to the 800x600 automatically.
Graphics 800,600,32,2
Graphics 320,200,32,3
Print "hi"
WaitKey()
For testing purpose, i do use following function:
Function Screen(defaultx=320,defaulty=240,Stretchx=640,Stretchy=480)
;bits=api_GetDeviceCaps(api_GetDC( api_GetDesktopWindow()),12) ;Userlib function - Get Desktop Bit size
bits=32 ;Set color depth manually
Graphics Stretchx,Stretchy,bits,2
Graphics defaultx,defaulty,bits,3
End Function
or following function, which uses user32 and gdi32 userlib:
;;gdi32.decls
;.lib "gdi32.dll"
;api_GetDeviceCaps% (hdc%, nIndex%) : "GetDeviceCaps"
;;user32.decls
;.lib "user32.dll"
;api_GetActiveWindow% () : "GetActiveWindow"
;api_GetDC% (hwnd%) : "GetDC"
;api_GetDesktopWindow% () : "GetDesktopWindow"
;api_GetSystemMetrics% (nIndex%) : "GetSystemMetrics"
;api_MoveWindow% (hwnd%, x%, y%, nWidth%, nHeight%, bRepaint%) : "MoveWindow"
;api_SetWindowLong% (hwnd%, nIndex%, dwNewLong%) : "SetWindowLongA"
Function Screen(x,y,full=0)
;fill <0 = Fulldesktop, borderless window
;full =0 = Fulldesktop
;full =1 = original x,y
;full >1-5 = x*full,y*full size
;full >5 = 0
DeskX=api_GetSystemMetrics(0)
DeskY=api_GetSystemMetrics(1)
If x>DeskX Then x=DeskX
If x<64 Then x=64
If y>DeskY Then y=DeskY
If y<64 Then y=64
bits=api_GetDeviceCaps(api_GetDC( api_GetDesktopWindow()),12)
Graphics x,y,bits,6
Graphics x,y,bits,7
If full<=0 Or full>5
If full<0 Then api_SetWindowLong(api_GetActiveWindow(), -16, $10000000)
api_MoveWindow(api_GetActiveWindow(),0,0,DeskX,DeskY,True)
EndIf
If full>1 And full<=5 Then api_MoveWindow(api_GetActiveWindow(),0,0,x*full,y*full,True)
End Function
There is another way to display low res Graphic in bigger window, but it can be a bit slow on lower end machines.
Instead using 3d function, this ones uses software resizing.
You draw the game happenings on a imagebuffer instead of backbuffer.
Then after changing to backbuffer you resize the game image and after resizing you paste it on the backbuffer.
Function DrawSizeImage(image,x%,y%,w%,h%)
;Global scratch%=CreateImage(SW,SH) ; create a scratch image
Local ih%=ImageHeight(image)
Local iw%=ImageWidth(image)
Local sw%=Abs(w)
Local sh%=Abs(h)
Local xr#=(Float(iw)/Float(sw))
Local yr#=(Float(ih)/Float(sh))
fromimg=ImageBuffer(image)
toimg=ImageBuffer(scratch)
Local vf=-1+((h>0)*2)
Local fw=(w<0)*w
Local fh=(h<0)*h
If w>=0
For ix=0 To sw
CopyRect ix*xr,0,1,ih,ix,0,fromimg,toimg
Next
Else
For ix=0 To sw
CopyRect ix*xr,0,1,ih,sw-ix,0,fromimg,toimg
Next
EndIf
For iy=0 To sh
CopyRect 0,iy*yr,sw,1,x+fw,y+(iy*vf),toimg
Next
End Function
eh, Déjà vu ??
on my 1920x1080 monitor 320 by 240 does not work but 640x480 in mode 1 (fullscreen) produces a image with a large black border..
I would seriously consider scaling your games graphics to use a more modern resolution (at least 800x600) but maintain the look of 320x240 by either realtime scaling or simply compensate by scaling your actual art files to be larger.
320x240 works fine on Analog displays but will cause nothing but issues on digital displays.