如何将OpenGL的glReadPixels函数为CImage类实现的?
摘要:本来是一件很简单的事情,就是将View上使用OpenGL画出来的数据生成图片让其实现打印的功能,我们知道MFC提供打印的接口是不支持OpenGL的(至少我不清楚),必须将它转成GDI再画在Print的pDC上。OpenGL一直都有一个函数名
本来是一件很简单的事情,就是将View上使用OpenGL画出来的数据生成图片让其实现打印的功能,我们知道MFC提供打印的接口是不支持OpenGL的(至少我不清楚),必须将它转成GDI再画在Print的pDC上。
OpenGL一直都有一个函数名字叫:glReadPixels,它能read a block of pixels from the frame buffer,但是谁都没想到它竟然转换成CImage竟然是这样的规则。
http://www.opengl.org/sdk/docs/man/xhtml/glReadPixels.xml中说到:Specify the window coordinates of the first pixel that is read from the frame buffer. This location is the lower left corner of a rectangular block of pixels. 是从左下角开始读,这一条是我始料未及的,一般通常都是从左上角开始的,我至今没想明白为什么它要这样设计。在调用这个函数之前还需要glReadBuffer(GL_BACK_LEFT);这句,如果你想将它设置成GL_FRONT_LEFT似乎还不行,它并不会从左上角开始,真弄不懂这设计者的逻辑。
