directdraw初始化失败
答案:2 悬赏:0 手机版
解决时间 2021-03-28 19:13
- 提问者网友:我没有何以琛的痴心不悔
- 2021-03-27 18:35
我在玩游戏 驿动之心 的时候 打开之后黑屏 之后弹出窗口说directdraw初始化失败 请各位大虾们帮帮忙 怎么样才能让我能玩呢~
最佳答案
- 五星知识达人网友:老鼠爱大米
- 2020-04-20 21:24
1、重装游戏;
2、重装DIRECT X;
3、重新显卡驱动;
2、重装DIRECT X;
3、重新显卡驱动;
全部回答
- 1楼网友:第四晚心情
- 2020-11-29 17:29
最简单的是使用全屏独占模式。
要开始初始化dd,首先创建并显示一个窗口,获得它的句柄;
初始化代码:
#include
#pragma comment(lib,"dxguid.lib")
#pragma comment(lib,"ddraw.lib")
lpdirectdraw7 lpdd;
lpdirectdrawsurface7 lpddsmain;
lpdirectdrawsurface7 lpddsback;
//下面程序初始化dd,并设置窗口分辨率为width*height,bpp为色深,注意要设定相应变量的值为适合的值(如800*600*16),否则初始化失败。
bool initddraw(hwnd hwnd, int width, int height, int bpp)
{
if(failed(directdrawcreateex(null, (void**)&lpdd, iid_idirectdraw7, null)))
return false;
if(failed(lpdd->setcooperativelevel(hwnd, ddscl_exclusive|ddscl_fullscreen)))
return false;
if(failed(lpdd->setdisplaymode(width, height, bpp, 0, 0)))
return false;
ddsurfacedesc2 ddsd;
zeromemory( &ddsd, sizeof( ddsd ) );
ddsd.dwsize = sizeof( ddsd );
ddsd.dwflags = ddsd_caps | ddsd_backbuffercount;
ddsd.ddscaps.dwcaps = ddscaps_primarysurface | ddscaps_flip | ddscaps_complex | ddscaps_3ddevice;
ddsd.dwbackbuffercount = 1;
if(failed(lpdd->createsurface( &ddsd, &lpddsmain, null)))
return false;
// get a pointer to the back buffer
ddscaps2 ddscaps;
zeromemory( &ddscaps, sizeof( ddscaps ) );
ddscaps.dwcaps = ddscaps_backbuffer;
if(failed(lpddsmain->getattachedsurface( &ddscaps, &lpddsback)))
return false;
lpddsback->addref();
return true;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯