Application Surface

This section deals with the application surface and the functions specific to it.

GameMaker: Studio doesn't actually render most things to the screen directly, but instead it renders them to the application surface. This is essentially a surface, just like any that you can make yourself using the surface functions, and as such can be manipulated with the surface functions, drawn to, sent to shaders and anything else that you would normally do with surface are also applicable to this.

NOTE: The only thing you cannot do with the application surface is free it. It always exists, although the index value to access it may change.

When you run your game, this surface is created the first time that the draw event is called in each new room that you enter, which means that nothing is drawn until that point. However, you can still get the application surface position and resize it in the CreateEvent or any other event without getting any errors and the values used will be relevant to the surface when it is created. The actual sequence of events is as follows:

  • Pre-draw event

  • --- > application surface created and render target set

  • For each visible view, or, if no views are active, once
    Draw begin event
    Draw event
    Draw end event
  • --- > the application surface target is reset here

  • Post draw event

  • --- > the application surface is now drawn to the back buffer by default (although you can switch this off)

  • Draw GUI begin event
  • Draw GUI event
  • Draw GUI end event

The use of this surface means that you can easily create incredible transitions using shaders, or take the screen and wrap it around a 3D form, or simply scale a low-res game up to any resolution screen... The possibilities are endless!

To access this surface, you need to use the built-in global variable application_surface which is explained on the following page:

You also have a couple of specialist functions that are designed only for use with the application surface:


Back: Surfaces



No Examples Submitted

Does this page need better examples? Be the first to Submit

No Edits Suggested

Is this page unclear or not descriptive enough? Suggest an edit to the page and with enough upvotes your changes will be made.

No Questions Have Been Ask

Do you have a question about this page? Ask it Here