Для фонового изображения загрузите изображение в текстуру и примените текстуру к полноэкранной треугольной полосе. Затем нарисуйте свои частицы поверх текстурированной треугольной полосы.
// During initialization:
int width = ..., height = ...;
void *data = ...;
GLuint tex;
glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_2D, tex);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, width, height,
0, GL_RGB, GL_UNSIGNED_BYTE, data);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// Drawing the textured primitive will be different depending on OpenGL version
Вы сами по себе, когда дело доходит до загрузки изображения в память. OpenGL не декодирует форматы изображений. (В Windows вы можете использовать WIC, в Mac OS X / iOS вы можете использовать Quartz, в Linux / и т. Д. Вы можете использовать LibPNG / LibJPEG / и т. Д.)