I guess we could in general support the extended functionality through implicit conversions.
The user would then `import org.macrogl.ex._` and have the methods added automatically:

    implicit class rasterExOps(val self: org.macrogl.raster.type) extends AnyVal {
      def drawbuffer(b: Int)(implicit gl: Macroglex) = ???
    }

Then we wouldn't have duplicate names in the `ex` package. Seems like a neat idea.

However, I'm not sure how to make this work for MacroGL classes in the extended package (like `ex.Program`).
Right now it would work because `ex.Program` does not have any state (or constructor arguments) beyond that in the regular `Program`, but can we guarantee that this won't change in the future for `ex.Program` or other abstractions?