dsfml.graphics.renderstates

There are four global states that can be applied to the drawn objects:

  • the blend mode: how pixels of the object are blended with the background
  • the transform: how the object is positioned/rotated/scaled
  • the texture: what image is mapped to the object
  • the shader: what custom effect is applied to the object

High-level objects such as sprites or text force some of these states when they are drawn. For example, a sprite will set its own texture, so that you don't have to care about it when drawing the sprite.

The transform is a special case: sprites, texts and shapes (and it's a good idea to do it with your own drawable classes too) combine their transform with the one that is passed in the RenderStates structure. So that you can use a "global" transform on top of each object's transform.

Most objects, especially high-level drawables, can be drawn directly without defining render states explicitely – the default set of states is ok in most cases.

1 RenderWindow window;
2 Sprite sprite;
3 
4 ...
5 
6 window.draw(sprite);

$(PARA If you want to use a single specific render state, for example a shader, you can construct a $(U RenderStates) object from it:)

1 auto states = RenderStates(shader)
2 window.draw(sprite, states);
3 
4 //or
5 window.draw(sprite, RenderStates(shader));

$(PARA When you're inside the `draw` function of a drawable object (inherited from $(DRAWABLE_LINK)), you can either pass the render states unmodified, or change some of them. For example, a transformable object will combine the current transform with its own transform. A sprite will set its texture. Etc.)

Members

Structs

RenderStates
struct RenderStates

Define the states used for drawing to a RenderTarget.

See Also

$(RENDERTARGET_LINK), $(DRAWABLE_LINK)

Meta