游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5626|回复: 1

glReadPixels函数在32位CPU上能正常取图像数据,在64位CPU上为

[复制链接]

3

主题

11

帖子

17

积分

新手上路

Rank: 1

积分
17
发表于 2005-12-22 18:46:00 | 显示全部楼层 |阅读模式
在窗口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为保存屏幕图像数据的缓冲区,在外面已经生成。

这里的“失真”就像“花屏”一样的效果。

82

主题

331

帖子

340

积分

中级会员

Rank: 3Rank: 3

积分
340
QQ
发表于 2005-12-23 21:15:00 | 显示全部楼层

Re:glReadPixels函数在32位CPU上能正常取图像数据,在64位CPU

CPU 方面你所指的错误可能性接近 0
据我所知有两种可能:
1. 颜色位数对应不准确
2. 行字节总数 32 bits 对齐 ( 但是此问题不会导致花屏,顶多是图片出现倾斜 )
3. 能力之外,如果你知道,也请你告诉我
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 02:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表