|
|
在窗口CMyWndClass上用OpenGl画了一个图形,然后用glReadPixels获取窗口中的图像,将图像读到缓冲区lpDIBits中。我的程序最初是运行在intel 的32位CPU上,用glReadPixels读到的图像跟窗口上显示的一致。后来,我把程序拿到intel 的64位CPU上运行,发现,图像严重失真。不知什么原因? 请熟悉opengl的老兄帮忙分析一下。
下面是我使用glReadPixels的方式,不知有什么问题。
LPBYTE CMyWndClass::GetImageData()
{
::glReadPixels(0, 0, m_nImageSize[0], m_nImageSize[1],
GL_RGB, GL_UNSIGNED_BYTE, (GLvoid *)m_lpDIBits);
return m_lpDIBits;
}
其中: m_nImageSize[0] = (窗口宽度 / 4) * 4
m_nImageSize[1] = 窗口高度
m_lpDIBits为保存屏幕图像数据的缓冲区,在外面已经生成。
这里的“失真”就像“花屏”一样的效果。
|
|