nVidia and playblast

What is the fastest way to playblast large RGB image buffers (greater then 1k) on the nVidia Geforce 2 cards.

I tried glDrawPixels and glTexSubImage2D, any other ways of improving performance?

-oz

Use the data format GL_UNSIGNED_BYTE/GL_BGRA, if you’re not already.

  • Matt

I was using UNSIGNED_BYTE/GL_RGB. Changing to new format did not cause any enhancement.

-oz

I was using UNSIGNED_BYTE/GL_RGB, changing to the new format did improve anything?

-oz

What did you do? Did you actually pad your data with dummy alpha values and use GL_BGRA, or did you just switch to GL_BGR? GL_BGR will do no good. GL_UNSIGNED_BYTE/GL_BGRA DrawPixels definitely is faster than either GL_RGB, GL_BGR, or GL_RGBA, I can assure you.

  • Matt

Hmmmm… Matt, you say GL_BGRA is faster, does that mean you get faster performance using GL_BGRA for the internal format of textures, or only when doing frame buffer reads and such like?

  • Nutty

GL_BGRA is not an internal format – GL_RGBA and GL_RGBA8 are, but GL_BGRA is not.

However, GL_BGRA/GL_UNSIGNED_BYTE (format/type) is the fastest way to download to GL_RGBA8 (internalformat), and for that matter, to GL_RGB8 too.

  • Matt

on my vanta (6.34 drivers) using
glDrawPixels(SIZE, SIZE, GL_BGRA_EXT, GL_UNSIGNED_BYTE, pixels4 );

is slightly slower than

glDrawPixels(SIZE, SIZE, GL_RGBA, GL_UNSIGNED_BYTE, pixels4 );

and more than 20x slower than
glDrawPixels(SIZE, SIZE, GL_RGB, GL_UNSIGNED_BYTE, pixels4 );

what gives?
im using
glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);

I don’t know about that, specifically, but DrawPixels is not very fast on TNT2. I am specifically talking about GeForce here.

  • Matt