title: Rendering a label doesn't work unless the screen function evaluates to it
body: <p>I'm trying to <code>render!</code> a simple label on the <code>on-render</code> screen function, but it doesn't work. All I get is a blank screen.</p>
  
  <p>It took me some time but I finally found that this happens when I return something else but the label. For example, this works:</p>
  
  <pre><code>(defscreen main-screen
    :on-show
    (fn [screen entities]
      (update! screen :renderer (stage))
      [])
  
    :on-render
    (fn [screen _]
      (clear!)
      (render! screen [(label "Hello, world!" (color :white))])))
  </code></pre>
  
  <p>This doesn't (all that's changed is the last line on <code>on-render</code>):</p>
  
  <pre><code>(defscreen main-screen
    :on-show
    (fn [screen entities]
      (update! screen :renderer (stage))
      [])
  
    :on-render
    (fn [screen _]
      (clear!)
      (render! screen [(label "Hello, world!" (color :white))])
      ["I just wanna pass my own data here, ugh.."]))
  </code></pre>
  
  <p>For testing, I replaced the <code>label</code> with <code>texture</code> and <em>it did</em> work.</p>
  
  <p>What's causing this? it seems so arbitrary (the label I evaluate to in the first example gets completely ignored anyway! so why do I have to pass it? I don't get what's going on).</p>
  
  <p>P.S. creating the label on every frame is intentional in this case, and I know I could just set it from one I make in <code>on-show</code>, but I tried to be a bit more dynamic. I also tried to put a <code>Thread/sleep</code> after <code>render!</code> to make sure I have a visible time-window between rendering &amp; clearing.</p>
  
  <p>I'm a complete beginner I'd like to know why the above doesn't work in addition to how can I fix it?</p>