读取opengl绘制到窗口中的像素,在vxtPLWindowImpl.cpp的vEndDraw函数中,
在SwapBuffers后面即可读取每帧绘制的像素数据
void ReadVapsPixel(void) { glReadBuffer(GL_FRONT); glPixelStorei(GL_UNPACK_ALIGNMENT, 4); glReadPixels(0, 0, WindowWidth, WindowHeight, GL_RGBA, GL_UNSIGNED_BYTE, pPixelData); }glReadBuffer(GL_FRONT)这句话很重要,否则每次不能读到当前帧数据,只能读到上一帧数据。解释如下:
前后缓冲代表了双缓冲的帧缓冲,前缓冲就是屏幕显示的内容,后缓冲是显卡进行绘制的地方。当用户想使绘制的内容变为可见,就必须调用平台相关的交换缓冲区命令,这会立刻交换后缓冲内容至前缓冲。交换操作指后缓冲变成前缓冲,前缓冲变成后缓冲。如果你在交换后读取后缓冲,将读到的是交换前的前缓冲内容。