我创建了一个小型的“粒子系统” https://github.com/barrycarter/bcapps/blob/master/particleman.c (使用“gcc -lglut particleman.c -o particleman”编译),现在想要 记录输出。我该怎么做呢?
我尝试使用recordmydesktop,但它本身并不好用 似乎是错误的工具。
我可以让libglut直接输出MP4文件吗?
如果没有,我可以将它作为图像输出每个帧(然后使用 其他软件结合这些图像)?
这看起来应该很容易,但我很难过。
答案 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。