Yeah, this probably isn't going to work the way you want. You asked by PM how I did the colour cycling on my CDI demo. The answer is 'the hard way'.
On the Amiga we had the copper, and it could change the colour of a scanline every 4 pixels, so on a 320wide screen you could get 80 colour changes and the lovely colour gradients you are after just by cycling 80 words or so of data every frame.
Obviously no such thing exists on the PC so we have to emulate it the hard way. You need to draw all the pixels on the scanline every frame.
So the problem is in two parts
1) prepare the colours for plotting
2) plot the colours
There are loads of ways to approach this. I can't remember what I did for my demo. I suspect I filled an array with the 32 bit colours and just used GL_POINT to plot them. ie.
C pseudo-code
const int width=320
int y=150
float r[width]
float g[width]
float b[width]
// fill r,g,b arrays with something
glBegin(GL_POINT)
for x = 0 to width
{
glColor3f(r[x],g[x],b[x])
glVertex2i(x, y)
}
glEnd()
Try it with random numbers in the floats to start off with. Using GL_POINT is a pretty slow way to draw things though.
<edit>Just checked, my conversion of the CDI demo was entirely software rendered
Jim