rendered paste body
glEnable (GL_TEXTURE_RECTANGLE_ARB); GL_ERR ();
glBindTexture (GL_TEXTURE_RECTANGLE_ARB, sc_main_tex); GL_ERR ();
# ifdef PBO
glBindBufferARB (GL_PIXEL_UNPACK_BUFFER_ARB, sc_main_texbuf); GL_ERR ();
# else
glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, 640, 480, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, rgbpage); GL_ERR ();
# endif
# ifdef PBO
glTexSubImage2D (GL_TEXTURE_RECTANGLE_ARB, 0, 0, 0, 640, 480, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, 0); GL_ERR ();
// glBindBufferARB (GL_PIXEL_UNPACK_BUFFER_ARB, sc_main_texbuf); GL_ERR ();
glBufferDataARB (GL_PIXEL_UNPACK_BUFFER_ARB, 640 * 480 * 4, 0, GL_STREAM_DRAW_ARB); GL_ERR ();
ptr = (GLubyte *)glMapBufferARB (GL_PIXEL_UNPACK_BUFFER_ARB, GL_WRITE_ONLY_ARB); GL_ERR ();
if (ptr)
{
// memcpy (ptr, rgbpage, 640 * 480 * 4);
/*sc-bild übertragen*/
p1 = intpage; p2 = intpage + 640; q1 = (int *)ptr; q2 = (int *)(ptr + 640 * 4);
for (n = 0; n < 480 / 2; n++)
{
int m;
/*TODO: optimieren mit vier p's auf einmal?*/
for (m = 0; m < 640; m++)
{
*q1++ = palette_r[*p1++];
*q2++ = palette_r[*p2++];
}
p1 += 640; p2 += 640;
q1 += 640; q2 += 640;
}
glUnmapBufferARB (GL_PIXEL_UNPACK_BUFFER_ARB); GL_ERR ();
}
glBindBufferARB (GL_PIXEL_UNPACK_BUFFER_ARB, 0); GL_ERR ();
# endif