PART ONE



codes.cpp
#include <iostream>
#include <GL/freeglut.h>
using namespace std;
void grab(GLint w, GLint h)
{
GLubyte* image;
GLint dataLength = w * 4 * h; //四通道
image = (GLubyte*)malloc(dataLength);// 分配CPU内存
if (image == 0) {
exit(0);
}
else {
//将GPU缓存数据四通道解包存到CPU内存
glPixelStorei(GL_UNPACK_ALIGNMENT, 4);
glReadPixels(0, 0, w, h, GL_BGR_EXT, GL_UNSIGNED_BYTE, image);
}

本文深入探讨了OpenGL中的DOUBLE_BUFFER技术,通过分析代码展示了glutInitDisplayMode()如何启用双缓冲。内容包括glFlush()在双缓冲中的行为、全屏与窗口之间的数据流动,以及GL_BACK和GL_FRONT的角色。文章提出了四个关键推测,解释了缓冲区的工作原理。
最低0.47元/天 解锁文章
981

被折叠的 条评论
为什么被折叠?



