请教DDraw问题

rageliu 2010-07-06 11:49:33
不熟悉ddraw,请教几个问题:
1。我从一个已经创建成功的表面取得其DDSURFACEDESC2 ddsd结构,然后用该结构的ddsd.ddpfPixelFormat格式创建离屏表面,出现格式不支持的错误。从已经创建成功的表面取的格式怎么还会不支持呢?
2。对一个表面使用Blt,出现0x80004001错误“The function called is not supported at this time”,似乎是说调用该函数的时机不对,这个有什么要注意的吗,一般应该在什么时候调用,或是说什么尸时候调用会出这个错误
3。对表面Lock能成功,但是GetDC()却不能成功,对GetDC的使用需要注意什么

我其实想GetDC后写字,但是GetDC失败,所以测试了Lock,这个是成功的,我又想改成离屏表面画好后Blt,但是遇到上面的创建表面时格式不支持错误和Blt调用错误,请熟悉ddraw的朋友指点指点,感谢。
...全文
213 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhao1zhong6 2010-07-16
  • 打赏
  • 举报
回复
贴一段代码你先看看吧
//******************************************************************//
HRESULT AlphaBlendToBack(DXSURFACE* pSur,int nPosX,int nPosY,UINT deep)
{
HRESULT hr;

HDC hSrcDC = NULL;
HDC hDesDC = NULL;

if( FAILED( hr = pSur->pdds->GetDC( &hSrcDC ) ) )
return hr;
if( FAILED( hr = g_pBackBuffer->GetDC( &hDesDC ) ) )
return hr;
//--------------------------调用AlphaBlend()----------------------//
BLENDFUNCTION blend;
blend.AlphaFormat = NULL;
blend.BlendFlags = 0;
blend.BlendOp = NULL;
blend.SourceConstantAlpha = deep;
::AlphaBlend(hDesDC,nPosX,nPosY,pSur->nWidth,pSur->nHeight,
hSrcDC,0,0,pSur->nWidth,pSur->nHeight,blend);
//-------------------------------End-----------------------------//
if( FAILED( hr = pSur->pdds->ReleaseDC( hSrcDC ) ) )
return hr;
if( FAILED( hr = g_pBackBuffer->ReleaseDC( hDesDC ) ) )
return hr;
return S_OK;
}
//******************************************************************//
饭fan有引力 2010-07-16
  • 打赏
  • 举报
回复
不是很清楚,初学者飘过
budweiser 2010-07-10
  • 打赏
  • 举报
回复
不熟悉 DDraw 同问。
wozwing 2010-07-09
  • 打赏
  • 举报
回复
卡口不一样在外频上也不样相对来说还是DDR的能好一些
rushly 2010-07-09
  • 打赏
  • 举报
回复

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧