> But does that mean I'll have to allocate a new AbstractRenderTarget on the 
> heap

Yes. Or you could just return something already cached within the respective 
Texture/Window objects to make it high load friendly.

As a side note, your suggested API makes the user believe there's no price for 
switching the rendering context all the time. That could work when you 
implement deferred rendering (e.g. later, call underlying system functions in a 
batch per context). But such API will not work for e.g. direct OpenGL 
rendering, because switching context states is considered to be expensive.

nimx lib kinda solves this like this: 
    
    
    let myImage = imageWithSize(x, y)
    
    myImage.draw: # Context switch here
          let ctx = getCurrentContext()
          ctx.drawRect(...)
          ctx.drawText(...)
          ... etc
          # Context switches back
    

Reply via email to