Forum: Topic

Draw Sprite Pos Fixed asset is fixing the draw_sprite_pos function with a shader and one script. It corrects "affine" drawing method without using D3D mode. Use very simple:

draw_sprite_pos_fixed(sprite, subimg, x1, y1, x2, y2, x3, y3, x4, y4, colour, alpha);

Demo: Download


  • True, fixed work of well-known function.
  • Perspective drawing.
  • Without using 3D.
  • Works fast and easy.
  • Optimized, clean and commented code.
  • Perfect work on all platforms - Windows, Mac, Linux, Android, iOS, HTML5 (WebGL only) and other.
  • Technical support for all who purchased.
  • And even more.

You need intermediate knowledge of GML to use.

Please write a review if you like the asset and tell me your suggestions for improvement. If you found an error in my code or my English, please contact me ;)

My other assets! Fixture editor, LUT shader, physics rope, liquid simulation, textured terrain, custom savegame system, day night cycle, breakable physics objects, shaders and more.

End User Licence Agreement (EULA).

Version 1.0.0. Published November 1, 2016

Created with GameMaker: Studio v1.4.1763

Age Rating: 4+

Average Rating

Your review

You can only review assets you've bought.


Anonymous 03 June 2019

Works fine albeit a bit counter-intuitive

I first began playing with the function by simply placing somewhat arbitrary numbers into the parameters, though ensuring that the coordinates would make relatively square-like skews. To my surprise, nothing was being rendered on screen. Took a bit of investigation to realize that x3 and y3 are actually the bottom RIGHT corner of your image, and x4 and y4 the bottom left. This works exactly how I want it to now, but I can definitely see why this asset has several reviews that say it simply doesn't work. Just a tiny bit more documentation, or maybe even just a little readout of the corner positions in the example would make this easier to use.

That said, this asset does exactly what it claims to do. Highly recommended!


Robert C 30 March 2019


Peter M 22 November 2018

Works in GMS2 fine after some changes

Great asset, works once the changes Matthew P suggested are implemented.

Has everything but an image_angle modification. Any chance that could be included too, or some pointers as to how we could apply it?


S X 17 November 2018


Matthew P 02 September 2018

Works in GMS2 with minor modification

1) Copy the vector functions in the create event of o_controller to your game object's create event.
2) Change all references of "format_perspective" to "global.format_perspective" via Ctrl + Shift + f.

You may need to change the name of the script this asset adds. If so, change all references to the script to the new name.

Great Asset, thanks KeeVee!


Anonymous 10 March 2018

Does not work

It doesnt work, dont buy it.


Jason C 05 September 2017


Exactly what I needed for my project. A life saver!


Brad L 09 February 2017

Works perfect and easy to understand


Anonymous 14 January 2017


There is on tiny little bug, the var format_perspective should be done only ONCE in the entire game, this is very clean on the ///

But unfortunately it's created locally and wont work on a different OBJ that you uses the script.

Easy fix: Just Crtl+shift+F and replace 'format_perspective' to 'global.format_perspective'

OH, and it dont work on HTML5


Michiru N 09 December 2016


This is exactly for what i'm looking for. I cannot believe that the built-in function give that horrible results.
I made a few changes to make this more simpler, moved the code in the controller creation event to a script called draw_sprite_pos_fixed_init() (that we put in the very first room in the game) and the variable format_perspective changed to global.format_perspective, so please consider it. Thanks!

Package contents

Loading, please wait

What is the issue?

Back to Top