PDA

View Full Version : How to display two value bitmap efficiently?



Barbary
03-23-2005, 08:55 PM
I dont know the name of this kind of bitmap in English. 1 bit per pixel .
How to display it quickly?
5MB takes 9 seconds when using texture.too slowly

T101
03-23-2005, 10:11 PM
Hmmm. Exactly what takes 9 seconds?
Loading and uploading and rendering, or just rendering?

Also, what are the dimensions of the bitmap?
5MB at 1 bit per pixel is over 40 million pixels.
8000x5000?

Barbary
03-24-2005, 12:51 AM
loading and rendering
40000*1000

Originally posted by T101:
Hmmm. Exactly what takes 9 seconds?
Loading and uploading and rendering, or just rendering?

Also, what are the dimensions of the bitmap?
5MB at 1 bit per pixel is over 40 million pixels.
8000x5000?

T101
03-24-2005, 05:35 AM
As far as loading it is concerned - that's up to you to fix.

W.r.t. upload times and render times:

-How much memory is there on the card?
-What's the sized internal format you use for uploading the texture?
-What is the maximum supported texture size in hardware on your card?

An example: if the card stores textures internally as powers of two and at 8 bits per pixel, you need 64MB of texture memory excluding mipmaps.
Add the frame buffer and you'll need a card with more than 64MB.

All that assuming texture sizes of 40000 or more are even supported by your hardware - you might be getting software rasterization here.

It may be a good idea to split the thing up into 40 separate 1024x1024 blocks. (or even about 160 512x512 ones - it all depends on the maximum supported texture size)

3B
03-24-2005, 06:42 AM
Also, unless you have a very unusual monitor, you can't actually display 40,000x1000 pixels at once, so you might consider streaming the data. It would mainly help with the loading part, but breaking it into chunks would probably help with sending to the card and displaying as well, especially if the card doesn't have much RAM.
If you normally display the entire thing, you probably want to display a lower resolution version, and page in higher res chunks as you zoom in. Depending on what your data looks like, it might be better to store each level as the difference between that level and the previous, which could let you compress better, thereby letting you load faster.
If you display at full resolution, just chop the file into chunks (512x512 or 1024x1024 probably, or 1000x1000 if your target hardware supports rectangle or NPOT textures) and load as needed (or in the background).