Render Delegation

Published June 19, 2001 by Zachary Booth Simpson, posted by Myopic Rhino
Do you see issues with this article? Let us know.
Advertisement
(C) 2000 - Zachary Booth Simpson. Copied with permission from http://www.mine-control.com/zack. If you find any of this work useful, please sign Zack's guest book: http://www.mine-cont...i/gbook-zbs.cgi.


[size="5"]Intent
[bquote]Pass-off special render cases to Model code.[/bquote]

[size="5"]Problem
[bquote]Generic View code often becomes clotted with special cases, especially near the end of a project. Render Delegation gets the special cases out of the View code and into Model subclasses.[/bquote]

[size="5"]Solution
[bquote]An example clot in View code:

if (typeToDraw==DARTH_VADERS_SHIP)
drawSpecialShieldEffect();
To encapsulate these kinds of special cases, the View delegates the draw back to the Model. For example: objectToDraw->draw(x,y)

It is common for the view to do the transformation and sorting work and pass screen coordinates to the draw method of a model.[/bquote]
[size="5"] Structure
[bquote]Not available at this time.[/bquote]

[size="5"]Examples
[bquote]No examples at this time. Email [email="kevin@gamedev.net"]kevin@gamedev.net[/email] to contribute.[/bquote]

[size="5"]Issues and Risks
[bquote]Use Render Delegation when:
  • You want to ensure reusability / encapsulation of the renderer.
  • The View code becomes clotted with special cases.
  • Every model tends to have a different implementations of render.
    Don't use Render Delegation when:
    • There are only a few special cases and the cost (compile time, encapsulation) of including render interfaces in Model code is very high.[/bquote]

[size="5"]Related Patterns
[bquote]Render Delegation passes draw commands from View to Model.

Render Delegation may be part of an Appearance Map.[/bquote]
Cancel Save
0 Likes 33 Comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement