创建DirectX环境

2016-02-19 13:59 10 1 收藏

今天图老师小编要跟大家分享创建DirectX环境,精心挑选的过程简单易学,喜欢的朋友一起来学习吧!

【 tulaoshi.com - 编程语言 】

一、首先创建一个"Hello Word!" Win32 Application程序

二、删除WM_PAINT消息中的以下内容
// TODO: Add any drawing code here...
RECT rt;
GetClientRect(hWnd, &rt);
DrawText(hdc, szHello, strlen(szHello), &rt, DT_CENTER);

三、修改函数

ATOM MyRegisterClass(HINSTANCE hInstance)
{

WNDCLASS wc;

//wc.cbSize = sizeof(WNDCLASS);

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = (WNDPROC)WndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(hInstance, IDI_APPLICATION);
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
wc.lpszClassName = szWindowClass;

return RegisterClass (&wc );
}

四、修改函数

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;

hInst = hInstance; // Store instance handle in our global variable

hWnd = CreateWindowEx(WS_EX_TOPMOST,szWindowClass, szTitle, WS_POPUP,
0, 0,GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), NULL, NULL, hInstance, NULL);

if (!hWnd)
{
return FALSE;
}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
return TRUE;
}

五、定义DirectDraw

a) 定义全局变量

LPDIRECTDRAW lpDD;
LPDIRECTDRAWSURFACE lpDDSPrimary;
LPDIRECTDRAWSURFACE lpDDSBack;

b)修改函数

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
HWND hWnd;

hInst = hInstance; // Store instance handle in our global variable

hWnd = CreateWindowEx(WS_EX_TOPMOST,szWindowClass, szTitle, WS_POPUP,
0, 0,GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), NULL, NULL, hInstance, NULL);

if (!hWnd)
{
return FALSE;
}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
DDSURFACEDESC ddsd;
DDSCAPS ddscaps;
HRESULT ddrval;
HDC hdc;
char buf[256];
ddrval=DirectDrawCreate(NULL,&lpDD,NULL);
if (ddrval==DD_OK)
{
ddrval=lpDD-SetCooperativeLevel (hWnd,DDSCL_EXCLUSIVE|DDSCL_FULLSCREEN);
if (ddrval==DD_OK)
{
ddrval=lpDD-SetDisplayMode (640,480,8);
if (ddrval==DD_OK)
{
ddsd.dwSize =sizeof(ddsd);
ddsd.dwFlags =DDSD_CAPS|DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps =DDSCAPS_PRIMARYSURFACE|DDSCAPS_FLIP|DDSCAPS_COMPLEX;
ddsd.dwBackBufferCount =1;
ddrval=lpDD-CreateSurface (&ddsd,&lpDDSPrimary,NULL);
if (ddrval==DD_OK)
{
ddscaps.dwCaps =DDSCAPS_BACKBUFFER;
ddrval=lpDDSPrimary-GetAttachedSurface (&ddscaps,&lpDDSBack);
if(ddrval==DD_OK)
{
return TRUE;
}
}
}
}
}
DestroyDirectDrawObjects();
DestroyWindow(hWnd);
return FALSE;
}

c)添加头文件
#include

d)在project|setting|link添加ddraw.lib

e)添加函数声明及函数体

static void DestroyDirectDrawObjects(void);
static void DestroyDirectDrawObjects(void)
{
if(lpDD!=NULL)
{
lpDD-RestoreDisplayMode ();
if(lpDDSPrimary!=NULL)

{
lpDDSPrimary-Release ();
lpDDSPrimary=NULL;
}
lpDD-Release ();
lpDD=NULL;
}
}

六、添加

case WM_KEYDOWN:
switch(wParam)
{

case VK_ESCAPE:
case VK_F12:
DestroyDirectDrawObjects();
PostMessage(hWnd,WM_CLOSE,0,0);
break;
}
break;

来源:http://www.tulaoshi.com/n/20160219/1605883.html

延伸阅读
标签: 电脑入门
一、在Win10桌面界面下,首先使用键盘上的+ 组合快捷键打开运行对话框,然后在打开后面输入命令,之后按回车键或者点击底部的打开,如下图所示。 二、接下来会弹出一个Directx诊断工具提示框,我们直接点击,如下图所示。 三、之后就可以打开dxdiag诊断工具界面了,在默认的选项卡下的最底部,就可以看到Directx版本了,如下图所示。 ...
2.3 装入并显示图形文件 为了简明地说明采用DirectDraw图形文件的显示技术,我们以示例程序dx2介绍图面、图形文件装入、图形缩放、图形在图面上显示等的初步概念和实现技术。 2.3.1 DirectDraw显示图形的技术 为了显示图象,DirectDraw必需首先拥有类似画布(canvas)的绘图空间,DirectDraw并不向在DOS下那样简单地将显示缓...
Rendering with Meshes 翻译:claymanclayman_joe@yahoo.com.cn 定义Mesh 虽然有很多时候,你需要手动创建顶点和索引数据,但更普遍的情况是从外部的资源加载已有的顶点数据,比如从一个文件。通常我们使用.X文件来保存这些信息。在前一章里,代码的大部分都用来创建几何体了。对于简单的三角形和立方体来说这似乎是完全可行的,但设想假如用...
标签: Delphi
  提到 RPG (角色扮演游戏,Role Play Game),在座各位恐怕没有不熟悉的。从古老经典的 DOS 版《仙剑奇侠传》到新潮花哨的《轩辕剑》系列,无不以曲折优美的故事情节,美丽可人的主角,悦耳动情的背景音乐,震撼了每一个玩家的心灵。而说到 RPG,就不能不提 DirectX,因为 PC 上大部分的 RPG 都是用这个冬冬开发的。早在《轩辕剑叁外...
标签: 电脑入门
传闻Win10正式版内置最新Directx12版本,近日图老师小编安装了Win10技术预览版,想查看一下Win10系统的Directx版本是多少。那么Win10怎么看Directx版本?不少对电脑不是特别懂的朋友或许都不太了解。其实很简单,Win10查看Directx版本与Win7/8一样,以下是具体的查看方法步骤。 一、在Win10桌面界面下,首先使用键盘上的+ 组合快捷键打开运...

经验教程

964

收藏

90
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部