DirectDraw笔记
作者:互联网
关于我在学习DX部分的笔记。。。。
最近更新:20200503
开始之前,先来导入一下DirectDraw(下文缩写为DD)
1 // 添加DirectDraw支持 2 #pragma comment(lib,"ddraw.lib") 3 #pragma comment(lib, "dxguid.lib") 4 #include <ddraw.h>
简单说一下错误处理:
使用宏FAILED()检测是否失败,SUCCEEDED()检测是否成功:
1 if (FAILED(DirectDrawCreat(NULL, &lpdd, NULL))) 2 { 3 // error 4 } 5 6 if (SUCCEEDED(DirectDrawCreat(NULL, &lpdd, NULL))) 7 { 8 //succeeded 9 } 10 else 11 { 12 // error 13 }
DD的接口
IUnknown —— 所有COM对象都有的接口
IDirectDraw —— 开始使用DD时必须创建的主接口对象
IDirectDrawSurface —— 显示表面
IDireceDrawPalette —— 用于创建、加载和关联调色盘到显示表面
IDirectDrawClipper —— 剪切DirectDraw光栅和位图操作到一些可显示表面
使用接口
使用DirectDrawCreatEX()创建一个DD7的接口,另一种方法是使用QueryInterface来创建。
使用IDirectDrawSurface7接口来创建一个表面
用IDirectDrawPalette接口创建调色板(现在几乎用不到了)
若要使用窗口,或者减少位图以免溢出显示边界,创建一个裁剪器。
创建对象
DirectDreawCreat()函数原型:
1 HRESULT WINAPI DirectDreawCreat(GUID FAR* LPGUID, 2 LPDIRECTDRAW FAR* lplpDD, 3 IUnknown FAR* pUnkOuter);
lpGUID —— 显卡驱动的GUID, 通常都是NULL来设置为系统默认配置。
lplpDD —— 指向一个指向IDirectDraw接口的指针。
pUnkOuter —— 高级功能,一般是NULL。
与Windows协作
一般来说,用到的模式有两种:
- 全屏模式
- 窗口模式
方法: IDirectDraw7::SetCooperativeLevel()
函数原型:
1 HRESULT SetCooperativeLevel(HWND hWnd, 2 DWORD dwFlags)
相关链接:
https://blog.csdn.net/situzhuge/article/details/6327669
设置模式
方法: IDirectDraw7::SetDisplayMode()
参考博文:https://blog.csdn.net/a275600361/article/details/75039976
标签:lib,创建,DD,接口,笔记,NULL,DirectDraw 来源: https://www.cnblogs.com/lost-legacy/p/12823386.html