• Advertisement
Sign in to follow this  

GUI renderer implementation. Double instancing. 9 Quads.

This topic is 2150 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

[D3D11][C++][HLSL]
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.

Questions:
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

Share this post


Link to post
Share on other sites
Advertisement
I think you're over engineering it.

In what situation do you expect a single control to be needed over 100 times on screen at once? You must have a very large monitor.

Sure, you can instance your controls, but frankly just writing to a vertex buffer and -maybe- indexing that should be enough for you.

Share this post


Link to post
Share on other sites
You could take a look at my D3D9 implementation in Vocaluxe at Github. Though its in C# and uses D3D9, it should not be that much off from D3D11. It got all functions you were asking for.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement