游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2776|回复: 6

lPitch的长度一定是4字节的倍数吗?

[复制链接]

10

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2008-11-2 13:49:00 | 显示全部楼层 |阅读模式
如题,在32位模式中定位像素操作时,会出现将lPitch右移两位,也就是除以4的操作,这样我就担心一个问题,如果lPitch不是4的倍数,是否会产生问题呢?

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2008-11-2 15:00:00 | 显示全部楼层

Re:lPitch的长度一定是4字节的倍数吗?

lPitch来自于显卡,早期的显卡没有对齐设计,都是紧密排列。第一行象素完了马上就是第二行的象素。

新的某些显卡如专为2D设计的一些显卡,也是紧密排列。

所以不要管那些,按DX给你的lPitch来计算内存地址就行了。

10

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
 楼主| 发表于 2008-11-3 12:36:00 | 显示全部楼层

Re:lPitch的长度一定是4字节的倍数吗?

感谢楼上的回答,但是我的问题不是"lpitch是什么",而是lpitch这个数值是否一定会被设计成4的倍数,在32位模式下,如果知道它是4字节的倍数,对于主表面一个坐标(X,Y)我就可以用一个32位指针 (P + X + lptich>>2)来获取它的显存地址,否则除以4的操作将会丢失低位.

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2008-11-3 13:26:00 | 显示全部楼层

Re: Re:lPitch的长度一定是4字节的倍数吗?

shinidge: Re:lPitch的长度一定是4字节的倍数吗?

感谢楼上的回答,但是我的问题不是"lpitch是什么",而是lpitch这个数值是否一定会被设计成4的倍数,...


不一定是4的倍数

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2008-11-3 16:35:00 | 显示全部楼层

Re:lPitch的长度一定是4字节的倍数吗?

32位像素下应该是4字节对齐的,至少我没见过不是的。本质上是由内存总线的特性决定的,除非4次8位内存数据访问能比一次32位内存访问快。

2

主题

683

帖子

687

积分

高级会员

Rank: 4

积分
687
发表于 2008-11-4 06:50:00 | 显示全部楼层

Re:lPitch的长度一定是4字节的倍数吗?

胡兄是否经历过什么显卡的lpitch不是4的倍数?可否举例说明?

10

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
 楼主| 发表于 2008-11-4 20:30:00 | 显示全部楼层

Re:lPitch的长度一定是4字节的倍数吗?

to:hyzboy
这么说,我定义个DWORD指针P,采用 P+X+(Y*lpitch>>2)来定位(x,y)坐标的显存操作可能会出错了?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-20 23:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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