Tutorial 1: Creating a Device
Direct3D 9 的样例教程(Tutorials and Samples for direct3D9)此DX开发包提供弱干资源和例程代码。
Tutorials都是彻底从头重新编写的仅仅包含运行Direct3D 功能函数的必须应用程序接口(API)。
Samples都演示了Direct3D 9的最新特征和最基本的函数功能,所有的Direct3D样例都建立在DXUT之上。
Tutorials
以下的Tutorials演示了Direct3D基本功能也仅仅是SDK里面所提供的。
Direct3D Tutorials
这里的引导教程向你展示了如何在C/C++程序中使用Direct3D和D3DX。这些工作分成为以下必要的几步:
Tutorial 1: 创建设备(Creating a Device)
Tutorial 2: 渲染顶点(Rendering vertices)
Tutorial 3: 使用矩阵(Using Matrices)
Tutorial 4: 创建和使用光照(Creating and using lights)Tutorial 5: 使用纹理贴图(Using Texture Maps)
Tutorial 6: 使用网格(Using Meshes)
这些教程的代码都是来自各个教程所提供的源工程中,代码程序都是用C++编写,如果你正在使用C编译器,那么你必须为它们做些合理的改变以便成功的编译程序,至少你需要把vtable和指针加入到
这些接口函数
有些例程中的注释可能和平台sdk源文件中的不同,这些改变仅仅为了更简洁,但并没有改变所要表达的意思。
Tutorial 1: (创建设备环境)Creating a Device
为了使用Direct3D,第一步你创建一个应用程序窗口,然后创建和初始化Direct3D对象。你使用组件对象模型接口(component object model(com) interfaces),这些对象执行渲染场景所必须的对象。创建环境样例工程是为了说明创建Direct3D设备的工作和创建一个蓝的屏幕。
些例程使用如下几步:初始化Direct3D, 渲染场景,最后完全关闭。步骤:
第一步:创建窗口(Creating a Window)
第二步:初始化Direct3d(Initializing Direct3d)
第三步:处理系统消息(Handling System Messages)
第四步:渲染和显示一个窗口(Rendering and Displaying a Scene)
第五步:关闭(Shutting Down)
Note: CreateDevice例程工程文件路径为
((SDK root)\Samples\C++\Direct3D\Tutorials\Tut01_CreateDevic e)
Step 1 –创建窗口(Creating a Window)
所有的Windows应用程序在他们运行时首先都必须做的是,为用户创建一个应用程序窗口来显示。为了做到这点CreateiDevice工程开始从WinMain函数执行。下面的例程执行窗口的初始化工作:INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, INT)
{
//注册窗口类
WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
GetModuleHandle(NULL), NULL, NULL, NULL, NULL, “Direct3d Tutorial”, NULL};
RegisterClassEx(&wc);
//创建窗口
HWND hWnd = CreateWindow( “Direct3d Tutorial”, “ Direct3d Tutorial 01:CreateDevice”,
WS_OVERLAPPEDWINDOW,
100,100,300,300,
GetDesktopWindow(), NULL, wc,hInstance, NULL);
以上的样程是标准的WINDOWS编程,样程人定义和注册一个叫做“Direct3d Tutorial”的窗口类开始,在类被注册后,使用注册过的类创建一个最高层的窗口,用户区大小为300像素宽和30
0像素高。并且没有菜单和子窗口。使用WS_OVERLAPPEDWINDOW窗口样式创建一个包括最小化、最大化和关闭按钮的应用程序框架。(如果例程要运行在全屏模式下,首选的窗口样式为WS_EX_TOPMOST,指定创建的窗口应该放在所有非顶端窗口之上,即使窗口处于非激活状态。)当窗口创建完成后,程序调用标准Win32函数来显示和刷新窗口。
Step 2 –初始化Direct3D(Initializing Direct3D)
例程CreateDevice展示了在InitD3D程序中Direct3D的初始化工作,定义了在创建窗口之口被Winmain调用的函数。在创建一个应用程序窗口之后,你已经准备好去初始化一个你将用来渲染场景的Direct3D对象。这个过程包括:创建对象,定义显示参数,最后创建Direct3D设备。
在创建一个Direct3D对象之后,使用Idirect3D9::CreateDevice 方法创建设备,并且枚举用命设备,类型,样式等等。
If( NULL == ( g_pD3D = Direct3dCreate9( D3D_SDK_VERSION ) ) )
Return E_FAIL;
传给Direct3Dcreate9() 函数的参数必须是D3D_SDK_VERSION, 这个参数告诉Direct3D使用正确的头文件,这个值会在任何时间头文件或其它改变需要重新建立工程时增加。如果版本不匹配,Direct3Dc
reate9将会失败。
在填写D3DPRESENT_PARAMETERS 结构本之后你可以指定你
的3D程序如何表现。在CreateDevice例程中指定窗口化(Windowed)为TRUE,SwapEffect为D3DSWAPEFFECT_DISCARD, BackBufferFormat为D3DFMT_UNKNOWN.sdk
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof( d3dpp ) );
d3dpp.Windowed = TRUE;
d3dpp.Swapeffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
最后一步是使用Idirect3D9::CreateDevice 函数来创建Direct3D设备,如下代码:
If( FAILED( g_pD3D -> CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp,
&g_pd3dDevice ) ) )
以上代码创建设备使用D3DADAPTER_DEFAULT 标记来指定使用默认的显示器,在大多数情况下系统会使用单一的显示器,除非安装了多个图形硬件显卡,参数D3DDEVTYPE_HAL来指定设备类型为硬件设备而不是软件设备,使用D3DCREATE_SOFTWARE_VERTEXPROCESSING标记来告诉系统使用软件顶点处理方法,注意如果你使用
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论