Quick question, is it possible for a RenderTarget2D to be created with a surface format of ‘Alpha8’? I’ve tried creating one at it just gives me one with a format of ‘Color’.
I’m assuming its not, but I’d rather ask to confirm with someone who may know for certain.
If I’m right and its not possible, is there a list of what surface formats a render target can be?
Actually I am using the HiDef profile, so I have a feeling it may be a limitation of modern systems.
For context, I’m prototyping a 2D game where I want to have a dynamic texture atlas that could stream data into itself. Now since the atlas was going to be 16K square, updating that using a SetData<> call was going to have a noticeable performance blip on even the fastest GPUs (I’m on a GTX1080 and the blip is huge so I’d hate to think how slow it would be on slower cards).
To get around the blip I was testing the texture atlas as a render target as I would be able to schedule partial updates to it using draw calls. Now I did manage to get a working version using a surface format of Color but that takes up a whole GB of ram, so I wanted to see if it was possible to use an 8 Bit render target to quarter the memory usage and then draw using palettes.
I did consider the possibility of packing 4 pixels into a single color but the shader code to draw and extract the correct information would likely be awkward.
On the flip side I’m experimenting some other ideas.