游戏开发论坛

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

dx创建附加表面的问题

[复制链接]

1

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2004-3-11 13:12:00 | 显示全部楼层 |阅读模式
LPDIRECTDRAWSURFACE7 front;
且已设front为PRIMARYSURFACE,调用pDD7->CreateSurface时返回DDERR_NOTFOUND错误,是什么问题啊?
       
LPDIRECTDRAW7 pDD7;       
HRESULT result;
LPDIRECTDRAWSURFACE7 front;
LPDIRECTDRAWSURFACE7 back;
LPDIRECTDRAWSURFACE7 logo;
DDSURFACEDESC2 desc;

result=DirectDrawCreateEx(NULL,(VOID**)&pDD7,IID_IDirectDraw7,NULL);
        if(result!=DD_OK)
                return -1;
       
        result=pDD7->SetCooperativeLevel(m_hWnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN|DDSCL_ALLOWREBOOT);
        if(result!=DD_OK)
                return -2;       
       
        result=pDD7->SetDisplayMode(800,600,16,0,DDSDM_STANDARDVGAMODE);
        if(result!=DD_OK)
                return -3;

        memset(&desc,0,sizeof(desc));
        desc.dwSize=sizeof(desc);
        desc.dwFlags=DDSD_CAPS|DDSD_BACKBUFFERCOUNT;
        desc.ddsCaps.dwCaps=DDSCAPS_PRIMARYSURFACE|DDSCAPS_COMPLEX|DDSCAPS_FLIP;
        desc.dwBackBufferCount=1;

        result = pDD7->CreateSurface(&desc,&front,NULL);
        if(result!=DD_OK)
                return -4;
       
        DDSCAPS2 caps;
        caps.dwCaps=DDSCAPS_BACKBUFFER;

        result = front->GetAttachedSurface(&caps,&back);

        if(result!=DD_OK)
        {
                if(result==DDERR_INVALIDOBJECT)

                        return 1;
                if(result==DDERR_SURFACELOST)
                        return 2;
                if(result==DDERR_INVALIDPARAMS)
                        return 3;
                if(result==DDERR_NOTFOUND)
                        return 4;
        }
       

        memset(&desc,0,sizeof(desc));
        desc.dwSize=sizeof(desc);
        desc.dwFlags=DDSD_CAPS|DDSD_HEIGHT|DDSD_WIDTH;
        desc.ddsCaps.dwCaps=DDSCAPS_OFFSCREENPLAIN;
        desc.dwHeight=480;
        desc.dwWidth=640;

        result = pDD7->CreateSurface(&desc,&logo,NULL);
        if(result!=DD_OK)
                return -6;

1

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2004-3-11 13:26:00 | 显示全部楼层

Re: dx创建附加表面的问题

_________________________________________________________
Re:看不到切换的效果,也不知道是怎么了?

。。。。。。。。。。。。。。。。老问题遇上新同志。。。。。。。。。。

caps.dwCaps = DDSCAPS_BACKBUFFER;  
result = pPSur->GetAttachedSurface(&caps,&pBBuf);

大哥,使用结构前要先清零啊。

加个ZeroMemory,就OK了
-------------------------------------------------------------------------------------------

偶是新同志 [em7],不知道要清零啊 [em6]

感谢老同志hmhm [em23]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-5-15 17:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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