0

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

我尝试使用 recordmydesktop,但效果不佳,而且本质上似乎是错误的工具。

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

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

这似乎应该很容易,但我很难过。

4

1 回答 1

0

您可以使用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);

glut 不能直接输出 MP4。

于 2013-03-07T15:11:15.430 回答