I spent a large part of today looking at my draw routine and trying to simplify it. As it stands now, there is a separate cbuffer update and Draw call for each element of the maze (that is, each straight section and 90-degree bend). That's over 1600 draw calls! I was looking at a couple different techniques to reduce that: either aggregating all the verts into a huge vertex buffer, or instancing the maze elements. If I use the first method, I can get it down to six draw calls, but it's more difficult to set up from the text file defining the maze than instancing would be. With instancing, it takes twelve dra calls, but... I wasn't able to get it to work. I struggled with it for a long time, and eventually had to walk away and give myself a break from it.
I discovered the problem as I was preparing to shut down my pc for the night. If it weren't after midnight, or storming, I might have worked on it some more. As it is, I shut it down and decided to post this via my phone.
With luck, my insight will remain until I get a chance to implement it all properly tomorrow.
This is what happens when one's ambition exceeds one's current ability. Ah, well. I did take this on as a learning experience, so I expected slow progress at times. It's all part of the process of self-education ;)