Hi,
I recently got a 144x36 LED matrix display. It is built of three 48x36 modules wired in series and stacked next to each other. Each module has 12 shift registers controlling 96 colums and a demultiplexer controlling 18 rows. So, physical row 1 and 19 are actually the same virtual row. Shift registers are connected in such a way that the first clock cycle / data gets clocked into the left top LED.
After clocking in one complete row for the whole panel (288 bit), the first bit ends up on the right end on the display at the top led of the bottom half of the panel. The last bit clocked in controls the left top LED of the panel. I tried to visualize that in a picture attached

Now, since I've managed to multiplex this LED Matrix properly with an arduino, I've designed a simple framebuffer to properly put data on the display.
My Question now is, how do I design such a framebuffer? Usually, a framebuffer represents the physical design of a display, right? In my case, the framebuffer should be a byte array containing (144/8)*36=648 bytes. framebuffer[0] to framebuffer[17] representing the top row from left to right of the display and framebuffer[630] to framebuffer[647] the bottom row of the display.
So far so good, sounds reasonable to me...
However, I'm completely clueless if I should send these bytes MSB first or LSB first....
If I send 0x01 MSB first, the top left LED is lit. If I send 0x01 LSB first, the 8th LED of the first row is lit. Now, what should I prefer?

This is my first experience with displays ever... I want to be able to use third party libs with my display without having to transform the framebuffer they use to the bit layout of my framebuffer. So, is there a "standard" way to do this? I havent actually found much information about how to layout a framebuffer...
Also, if someone knows a ui library for arduino just modifying a framebuffer instead of controlling a specific physical display, I'd be happy If you drop me a link

Thanks!