游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2505|回复: 8

请教几个问题:surface

[复制链接]

5

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
发表于 2005-4-8 11:34:00 | 显示全部楼层 |阅读模式
表面是显存的线性表示,虽然可以存在于系统内存中,但更通常都存在于显卡的显存中。
关于这句话,有几个问题想问一下:
1、创建一个全屏windows后,请问这个能叫做primary surface或者front buffer吗?
它所占显存的大小怎么计算?
2、接着初始化d3d,设置d3dpresent_parameter结构的backbuffer的weight,height,format和count。在设置好backbuffer的weight,height,format后,每个backbuffer的大小肯定有了,怎么计算?显存中除了front buffer后剩下的容量是不是全部用来放置backbuffer?如果count足够大,是不是surface就得放在系统内存里了?

5

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
 楼主| 发表于 2005-4-8 14:41:00 | 显示全部楼层

Re:请教几个问题:surface

自己顶

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-4-8 14:46:00 | 显示全部楼层

Re:请教几个问题:surface

backbuffer是有限制的,有的显卡建不了太多的backbuffer,好象MX440上只能建24个。

1

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2005-4-8 21:06:00 | 显示全部楼层

Re:请教几个问题:surface

Surface的大小时可以算出来,先计算出一行的大小(它的字节大小也叫Pitch),一般比象素大小 * Width大,因为行是要对齐的,现在的显卡至少是64位对齐,  计算出行大小后乘以Height就是内存大小,一般情况下是不需要知道Surface大小的,如果要写Surface,直接锁定,就可以得到表面的指针(pv)和Pitch,某一点的指针 = pv + Pitch * y + x * 象素大小

5

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
 楼主| 发表于 2005-4-9 10:05:00 | 显示全部楼层

Re:请教几个问题:surface

ZeroBox,我想再确认一下:
对于这样一个surface,
d3dpp.BackBufferWidth            = 1024;
d3dpp.BackBufferHeight           = 768;
d3dpp.BackBufferFormat           = D3DFMT_A8R8G8B8;
它的大小怎么算的呢?谢谢

140

主题

1228

帖子

1233

积分

金牌会员

Rank: 6Rank: 6

积分
1233
QQ
发表于 2005-4-9 11:54:00 | 显示全部楼层

Re:请教几个问题:surface

1024*768*sizeof( D3DFMT_A8R8G8B8)
=1024*768*32

5

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
 楼主| 发表于 2005-4-11 10:49:00 | 显示全部楼层

Re:请教几个问题:surface

那为什么有的说大小应该是
(pitch * height) bytes

对于以上的surface,它的pitch是怎么算出来的呢?

24

主题

229

帖子

229

积分

中级会员

Rank: 3Rank: 3

积分
229
发表于 2005-4-11 12:46:00 | 显示全部楼层

Re:请教几个问题:surface

width,height是程序员指定的大小,lPitch是dx帮你计算的,好像主要是为了对齐数据。

不知道我理解的对不对,大家指点。

5

主题

39

帖子

39

积分

注册会员

Rank: 2

积分
39
 楼主| 发表于 2005-4-12 10:18:00 | 显示全部楼层

Re:请教几个问题:surface

那一个surface的大小到底等于:
weight*height*sizeof(D3DFMT_format)
还是
(pitch * height)

好像2种方法算出来的不一样
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-25 06:21

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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