application_surface & room view VS hardware resolution

K

Kobold

Guest
Hello.

Problem: when I stretch the application_surface to the dimensions of my display the relation of the sprite-pixels compared to the common draw functions such as draw_line seem to be off... example: the sprite pixel is stretch in the ratio that I want but the draw functions take the original display resolution as orientation... so the lines that get output are the original pixel size (very fine lines) but my sprites are stretched. The same problem occurs when trying to down-scale a sprite ...the pixels take the actual display resolution instead of the application_surface or view dimensions as orientation.
So I get all the original scale sprites as nice and chunky (retro) but everything else appears fine and tiny, you know what I mean?
I have an example here on a youtube video at 1:57
www.youtube.com/watch?v=31DYlmeBGqM
...you can clearly see how fine the draw_line lines are.

I don't want to change the actual hardware resolution... I would like to keep the actual resolution but I would like the drawing functions to mind what the original dimensions of my application without setting fullscreen that is not in the aspect ratio of the hardware display. Can it be faked or something?

Thank you
 
C

CoderJoe

Guest
So I kinda scanned your post and I have two ideas. First I think draw_line can be done with a width. Second, how are you scaling things? If you scale everything up, the draw functions don't "scale" up too. You have to draw bigger lines. I guess if you drew everything to a surface and then scaled the surface up it might work but I'm not sure how that works. Also, if you just want it to take up more screen space then you don't have to scale anything, just use a view and have the port on screen larger (make sure to keep it in aspect ration with the view)
 
K

Kobold

Guest
... Also, if you just want it to take up more screen space then you don't have to scale anything, just use a view and have the port on screen larger (make sure to keep it in aspect ration with the view)
Thanks Joe.
This is sort of my problem... I only want it to use the full potential of the display and render according to the dimensions of the room's view... which it doesn't. I haven't seen line width being within the range of possible arguments when looking at the function draw_line ...and even if it was an option the pixel pattern would still be according to the hardware resolution (too smooth compared to my retro graphics, haha). So I guess what I am looking for can not be done without resetting the display which I want to avoid , darn ! haha

edit: and again the sprites have not been scaled within the script...they're pixel-true original... but as soon as it scales it outscales the gpu's drawing relation
 

RangerX

Member
I didn't know that stuff like "draw line" could do it but I understand your problem on the sprite side.
Yes indeed "hardware rotations" will look more high resolution on an application surface that is bigger (more pixels available to recreate the image). And there's nothing to prevent that, its logical.
Here's some workarounds you can try though:

1) Create rotation animations for your sprites instead of using GMS's rotation. Basically you make your rotation an animation!

2) Change the way you scale the game.
Normally we would go like:
- Game starts / Detects monitor's resolution / adjust the size of app surf ONCE / draw the game every step

Now what you could try is to actually resize the app surf only when you're about to draw it and the you resize it down. You know, making sure everything is drawn at the non-scaled resolution.
 
K

Kobold

Guest
...
2) Change the way you scale the game.
Normally we would go like:
- Game starts / Detects monitor's resolution / adjust the size of app surf ONCE / draw the game every step

Now what you could try is to actually resize the app surf only when you're about to draw it and the you resize it down. You know, making sure everything is drawn at the non-scaled resolution.
Yes! That did it for me. Thanks Ranger
 
Top