游戏开发论坛

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

关于SURFACE的问题

[复制链接]

46

主题

238

帖子

238

积分

中级会员

Rank: 3Rank: 3

积分
238
发表于 2005-3-10 07:51:00 | 显示全部楼层 |阅读模式
请问:
      
LPDIRECT3DSURFACE9  g_pSDepth;

D3DLOCKED_RECT LockedRect;
g_pSDepth-> LockRect(&LockedRect,  0,0);
D3DSURFACE_DESC surfaceDesc;
g_pSDepth->GetDesc(&surfaceDesc);

DWORD* imageData = (DWORD*)LockedRect.pBits;
for( i = 0; i < surfaceDesc.Height; i++)
{
for(DWORD j = 0; j < surfaceDesc.Width; j++)
{
int index = i * LockedRect.Pitch / 4 + j;
imageData[3] = 0xffff0000;
}
}
为什么能够编译,但是运行时总是出现内存错误呢。
是不是SURFACE是如何初始化,是
LPDIRECT3DTEXTURE9     g_pTDepth;
D3DXCreateTexture( g_pd3dDevice,
                                    800,
                                    600,
        D3DUSAGE_RENDERTARGET,
        D3DFMT_A8R8G8B8,
        D3DPOOL_DEFAULT,
        &  g_pTDepth );
g_pTDepth->GetSurfaceLevel(0,&g_pSDepth);

这样吗?
不然怎么确定surface的format呢?

如果要用这个surface来储存z-buffer信息该怎么做呢?

小弟愚笨还请各位大侠指点啊





[em4] [em4] [em4]

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2005-3-10 09:08:00 | 显示全部楼层

Re:关于SURFACE的问题

g_pSDepth要通过CreateDepthStencilSurface来创建
创建完了之后通过SetDepthStencilSurface来把表面设置为渲染时的depth stencil buffer
开始渲染
渲染完了把depthstencilsurface设置为原来的surface
锁住你的buffer
开始写

如果你这样做的话,肯定可以成功,但是速度会巨慢,你自己体验一下吧

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-24 18:38

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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