Hi! I`m new in DirectX 11. Need some help on implementation of GUI renderer.
I`m trying to make efficient GUI renderer that draws instanced canvases. Controls draws on canvases. Each canvas consists of 9 quads (rectangles). Each quad has to be arbitrary size, have arbitrary position, color and texture (if textured).
First attempt: carried away by idea of instancing.
-in vertex shader instance quad nine times, each different size, position color and texture (so canvas came out of it, for ex. window or button ).
-then instance that canvas several times, each different scale and position.
I saw implementation of double instancing of leaves on an instanced trees in "Instancing10" SDK demo and Braynzar`s tutorial (http://www.braynzars...D3D11Instancing). But there was no scaling applyed to leaves. And here`s the problem. Also I tryed to learn sources from MyGUI and CEGUI, but its to complex and hard to understand for me for now.
1. Is this possible to translate and scale instanced quads in vertex shader before translating and scaling canvas? How?
2. Is this optimal implementation? Its just an UI over a game itself, so it must be as lightweight as possible (each type of control can be instanced tens or even hundreds of times)
3. Is there better implementation? ( Vertex buffers?)
Feel free to post. I wiil be appreciated for any ideas, books, links and even chunks of code (C++, HLSL or a pseudocode).
Thanks in advance!
Edited by Drop, 28 May 2012 - 09:53 AM.