DirectX学习--1

DirectX是Microsoft(微软)推出的一套函数库,这套函数库可以用于游戏,多媒体等软件开发,它内部包含了很多子模块,其中用于图形绘制的

模块称之为DirectX Graphics ,DirectX Graphics  又分为了二维回执和Draw和三维绘制的3D,我们使用的Direct3d draw来搭建图形学习的环境

因为DirectX提供了可以几乎操作显存的能力,所以比操作系统 提供的GDI(GraphicsDeviceInterface)快的很多.


注意在学习DirectX的时候需要安装他的SDK 还需要在IDE编译器中包含lib 和 include 文件等

PS:下面的代码我写的Dx = directX


此处包含了dx draw的头文件

#include <ddraw.h>
#pragma comment(lib, "ddraw.lib")
#pragma comment(lib, "dxguid.lib")

#pragma comment表示链接上面的两个库

LPDIRECTDRAW7 g_ddraw; //表示创建了dxdraw对象


//函数使用:

DirectDrawCreateEx()//此函数表示创建dxdraw对象

DirectDrawCreateEx( 0 , (void**)&g_ddraw,IID_IDirectDraw7,0);

第一个参数是lpGUID:指向DirectDraw接口的全局唯一标志符(GUID:Global unique identify)的指针。在这里,我们给它NULL,

表示我们将使用当前的DirectDraw接口。//沉默接口

第二个参数是lplpDD:这个参数是用来接受初始化成功的dxDraw对象的地址

第三个参数是pUnkOuter:代表了DxDraw对象的一个ID号   注意: 确保加入了dxguid.lib这个库: #pragma comment (lib, "dxguid.lib")

第四个参数pUnkOuter 在 DirectX7手册中解释道: 允许未来与组件聚合功能的兼容性。然而,目前,这种方法返回一个错误,如果这个参数是空的。当然我们还是写0为沉默参数


此函数返回值在手册中解释如下

If the function succeeds, the return value is DD_OK.//如果是正确的则返回DD_OK

If it fails, the function can return one of the following error values: //返回错误就为0

//设置dxDraw与操作系统的协调层级,因为dxDraw可以
//绕开操作系统直接和硬件的驱动程序交互,而此时操
//作系统也要访问硬件的驱动,那么就必须双方进行协
//商共用的方案,这种协商和我们应用程序如果使用dxDraw
//有关系的,如果就是一般的窗口程序中使用dxDraw那
//么设置为DDSCL_NORMAL即可,表示一般的层级,如果
//我们要独占显卡那么就必须设置为DDSCL_FULLSCREEN
//、DDSCL_EXCLUSIVE、DDSCL_ALLOWREBOOT,这样的组
//合就是一般进行全屏游戏开发使用的标记

此时我们就可以用g_ddraw指出成员了,他是一个指针

g_ddraw->SetCooperativeLevel(g_hWnd, DDSCL_NORMAL);

此时我们可以创建一个ddsd 来得到当前显卡工作模式

DDSURFACEDESC2 ddsd;

ddsd.dwSize = sizeof(DDSURFACEDESC2);

PS:此图片表示DDSURFACEDESC2 结构体的参数。

ddsd.dwSize = sizeof(DDSURFACEDESC2);
g_ddraw->GetDisplayMode(
&ddsd);


//设置当前显卡的工作模式
g_ddraw->SetDisplayMode(
//水平分辨率
ddsd.dwWidth,
//垂直分辨率
ddsd.dwHeight,
//位深
ddsd.ddpfPixelFormat.dwRGBBitCount,
//刷新率
0,
//默认的参数
DDSDM_STANDARDVGAMODE);


最后记得release()此指针

写法g_ddraw->Release();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值