求助;我这两种写法,为什么得到的结果不一样呢?谢谢!

ASDFU8888 2008-10-15 09:14:35
请教:
memcpy(&buffer1[0],&pBuffer[0],352*288*4);



memcpy(&buffer1[i*352],&pBuffer[i*352],352*4);

得到的结果为什么不一样啊?

比如:
像素块在内存中大小为 400*300
我想取 宽为 0 到 200
高0 到 180 的像素
就是 200*180

那我就要一行一行的拷贝
就需要使用第 2 种方法

可是 第 2 种 结果不对

我要怎么写啊?

谢谢!
...全文
145 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ASDFU8888 2008-10-15
  • 打赏
  • 举报
回复
谢谢!

这个问题是可以了

for(int i = 0; i < 288; i ++)
{
memcpy(&buffer1[i*120*4],&pBuffer[i*120*4],120*4);
}

我是把 buffer1 数据显示出来
为什么 宽还是 352
而高变底了,这是什么原因啊?
ASDFU8888 2008-10-15
  • 打赏
  • 举报
回复
BYTE* buffer1 =(BYTE*)hge->Texture_Lock(tex2,false,0,0,hge->Texture_GetWidth(tex2),hge->Texture_GetHeight(tex2));

是 BYTE 指针
JimmyFan2006 2008-10-15
  • 打赏
  • 举报
回复
如果buffer是int或者float型的, 应该没有问题. 但如果buffer是double 型的就不对了.
计算buffer[0]和buffer[352]之间的大小352*类型大小.
JimmyFan2006 2008-10-15
  • 打赏
  • 举报
回复
buffer的类型是???
ASDFU8888 2008-10-15
  • 打赏
  • 举报
回复
我发帖写错了
应该是

memcpy(&buffer1[0],&pBuffer[0],352*288*4);


for(i = 0; i < 288; i ++)
{
memcpy(&buffer1[i*352],&pBuffer[i*352],352*4);
}
得到的结果为什么不一样啊?
ASDFU8888 2008-10-15
  • 打赏
  • 举报
回复
谢谢!
也不行啊!
chenzhp 2008-10-15
  • 打赏
  • 举报
回复
memcpy(buffer1+i*352*4,pBuffer+i*352*4,352*4);
ASDFU8888 2008-10-15
  • 打赏
  • 举报
回复
谢谢楼上 2 位大哥

memcpy(buffer1+i*352,pBuffer+i*352,352*4);

还是不行啊



*4 是因为一个像素是 ARGB

xhs_lh04 2008-10-15
  • 打赏
  • 举报
回复
memcpy(buffer1+i*352,pBuffer+i*352,352*4);
freshairfly 2008-10-15
  • 打赏
  • 举报
回复

从代码逻辑上看应该这样吧
memcpy(&buffer1[i*352],&pBuffer[i*352],352);

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧