记录libglut渲染?

时间:2013-01-25 01:56:43

标签: glut

我创建了一个小型的“粒子系统” https://github.com/barrycarter/bcapps/blob/master/particleman.c (使用“gcc -lglut particleman.c -o particleman”编译),现在想要 记录输出。我该怎么做呢?

我尝试使用recordmydesktop,但它本身并不好用 似乎是错误的工具。

我可以让libglut直接输出MP4文件吗?

如果没有,我可以将它作为图像输出每个帧(然后使用 其他软件结合这些图像)?

这看起来应该很容易,但我很难过。

1 个答案:

答案 0 :(得分:1)

您可以使用glReadPixels将帧缓冲区的像素读取到数组中。您需要将数据存储在图像文件中 - 这里有一些代码:

rectangle<int> rect = getViewport();

const int width     = rect.width;
const int height    = rect.height;

const size_t bytesPerPixel = 3; // RGB
const size_t imageSizeInBytes = bytesPerPixel * size_t(width) * size_t(height);

// Allocate data for pixels
uint8_t* pixels = new uint8_t[imageSizeInBytes];

glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, width, height, GL_RGB, GL_UNSIGNED_BYTE, pixels);

// save data to an image
Image img(width, height, pixels);
buw::saveImage(filename, img);
过剩不会直接输出MP4。