游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4428|回复: 9

lpSurface和lPitch的问题,菜鸟,见笑!

[复制链接]

9

主题

311

帖子

333

积分

中级会员

Rank: 3Rank: 3

积分
333
发表于 2003-12-26 20:40:00 | 显示全部楼层 |阅读模式
desc.dwSize = sizeof(desc);
desc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PITCH;
desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN ;
desc.dwWidth = 640;
desc.dwHeight = 480;
pDD7->CreateSurface(&desc, &pOPla, NULL);
pOPla->Lock(NULL, &desc, 0, NULL);
上面最后一句Lock填充的desc里面,desc.lpSurface应该是多大啊?应该怎么计算啊?desc.lPitch又应该是多大啊?应该怎么计算啊?

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20468
发表于 2003-12-26 21:40:00 | 显示全部楼层

Re:lpSurface和lPitch的问题,菜鸟,见笑!

desc.lpSurface就是真正的图像数据缓冲指针,它的大小可以通过desc.lPitch*height来获得。

9

主题

311

帖子

333

积分

中级会员

Rank: 3Rank: 3

积分
333
 楼主| 发表于 2003-12-26 21:59:00 | 显示全部楼层

Re:lpSurface和lPitch的问题,菜鸟,见笑!

lPitch一般是多少啊?这个值怎么才能得到啊?

9

主题

311

帖子

333

积分

中级会员

Rank: 3Rank: 3

积分
333
 楼主| 发表于 2003-12-26 22:00:00 | 显示全部楼层

Re:lpSurface和lPitch的问题,菜鸟,见笑!

我的意思是怎么才能算出来?

9

主题

311

帖子

333

积分

中级会员

Rank: 3Rank: 3

积分
333
 楼主| 发表于 2003-12-27 22:13:00 | 显示全部楼层

Re:lpSurface和lPitch的问题,菜鸟,见笑!

upup

9

主题

311

帖子

333

积分

中级会员

Rank: 3Rank: 3

积分
333
 楼主| 发表于 2003-12-28 00:28:00 | 显示全部楼层

Re:lpSurface和lPitch的问题,菜鸟,见笑!

pDD7->SetCooperativeLevel(m_hWnd,DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN|DDSCL_ALLOWREBOOT );
pDD7->SetDisplayMode(640,480,16,0,DDSDM_STANDARDVGAMODE);
memset(&desc,0,sizeof(desc));      
desc.dwSize = sizeof(desc);           
desc.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
desc.dwBackBufferCount = 1;        
desc.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE | DDSCAPS_COMPLEX | DDSCAPS_FLIP;
pDD7->CreateSurface(&desc,&pPSur,NULL);
memset(&desc,0,sizeof(desc));        
desc.dwSize = sizeof(desc);
desc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PITCH;
desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN ;
desc.dwWidth = 640;
desc.dwHeight = 480;
pDD7->CreateSurface(&desc, &pOPla, NULL);
用上述代码最后获得的desc.lPitch怎么为0啊?
我应该怎么编程序来测试啊?

9

主题

311

帖子

333

积分

中级会员

Rank: 3Rank: 3

积分
333
 楼主| 发表于 2003-12-28 20:57:00 | 显示全部楼层

Re:lpSurface和lPitch的问题,菜鸟,见笑!

up,这里的人气实在是.....

13

主题

145

帖子

149

积分

注册会员

Rank: 2

积分
149
发表于 2003-12-30 13:59:00 | 显示全部楼层

Re:lpSurface和lPitch的问题,菜鸟,见笑!

lpSurface和lPitch是lock的时候赋的值,具体是怎么样没跟进去看过。lPitch不一定等于width*sizeof(pixel)。lPitch=0可能是因为没有lock。

0

主题

21

帖子

21

积分

注册会员

Rank: 2

积分
21
发表于 2003-12-31 09:44:00 | 显示全部楼层

Re:lpSurface和lPitch的问题,菜鸟,见笑!

在创建的时候不要指定 desc.dwFlags 中含有 DDSD_PITCH 项,不然就表示这个 lpitch 成员是由你来填充。
你只要用不含 DDSD_PITCH 的 dest  创建 Surface 后再调用含 DDSD_PITCH 的 Lock 就可以得到 lpitch 的大小了。

13

主题

145

帖子

149

积分

注册会员

Rank: 2

积分
149
发表于 2003-12-31 09:55:00 | 显示全部楼层

Re:lpSurface和lPitch的问题,菜鸟,见笑!

呵呵,又学了一招。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-24 21:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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