You are welcome.
Yes, breaking down geometry into smaller geometry is called tessellation. Feel free to have a deeper look into how Sprite 3D does it if it helps; it uses a single triangle strip to creates rows of quads that go right and left alternatively. I believe that I left in some of the algebra that I used within the comments to make it a bit clearer as to what is happening but I'm not sure if it's still there.
I've been irritated by this particular artifact for a long time...
- My first attempt was called
Spinning Card, which faked a 3D rotating sprite. It sub-divided the quad into four quads so that the centre point was where it should be. Just this move made a noticeable difference.
Sprite 3D went further to allow any number of sub-divisions that allows (although less likely to use) quad-per-pixel or even quad-per-subpixel! However, this creates a massive mesh that needs to be updated constantly.
- My latest approach is to allow it to be done 'properly' where the texture is "perfectly" interpolated. That is
Elastic Sprite. The default mode treats it like elastic whereas the perspective mode works out the angle of the quad and adds distance to it.
These were created to allow myself and others to avoid this particular problem.
Note also, that Selba Ward allow each of its drawables to be used independantly of its others. This means that you can simply copy into your project the header and source files for the drawable(s) that you want to use instead of building the library and including it externally. Note that if you do use this method, all drawables require the small, common header file:
Common.hpp to be included alongside their headers.