e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 程序开发 >> ASP.net教程 >> VC.NET的Direct3D极速入门宝典 >> 教程正文
 
教程搜索
 
 
相关教程
  • C++/CLI实战——HELLO
  • VC编写简单的序列号(SN)填写器
  • Visual Studio 2005体验泛型编程
  • C++/CLI基本数据类型探索
  • 用托管C++编写Windows服务
  • Visual C++ 2005图像编程之属性设置栏
  • Visual C++ 2005图像编程之工具栏
  • Visual C++ 2005图像编程之预备知识
  • 把其他C/C++编译器集成到VC2005中
  • VC.NET实现清爽便利的Windows游戏窗口
  • C++:最强大的.NET语言之可访问性
  • C++:最强大的.NET语言之装箱
  • C++:最强大的.NET语言之内存与资源
  • C++:最强大的.NET语言之对象构造
  • Visual C++2005中开发自定义绘图控件
  • C++/CLI程序进程之间的通讯
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
VC.NET的Direct3D极速入门宝典
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9

听说DirectX9.0发布了吗?如果没有,你现在也应该听我说过了,那就去http://download.microsoft.com/download/b/6/a/b6ab32f3-39e8-4096-9445-d38e6675de85/dx90bsdk.exe下载一个最新的DirectX9.0的SDK,因为我将使用D3D9来进行全文的讲解。其实DirectX9.0里有非常详细的教程和参考,大多数人只需要看看这些帮助就可以自己学习D3D了,我的这篇文章适合那些很懒但想快速入门、不懂英文或编程知识很欠缺的人看。装好DirectX9.0后,打开VC.net,新建一个Win32工程,在StdAfx.h里添加下面的语句:

#include <d3d9.h> // D3D标准头文件

#include <D3dx9math.h> // D3D数学库头文件

#include <stdio.h> // 这个不用我说了吧?

#pragma comment( lib, "d3d9" ) // D3D的静态库

#pragma comment( lib, "d3dx9" ) // D3D数学库的静态库

然后把winmain所在文件的代码做如下的修改:

#include "stdafx.h"

#define MAX_LOADSTRING 100

HINSTANCE g_hInst;

HWND g_hWnd;

IDirect3D9 *g_pD3D;

IDirect3DDevice9 *g_pd3dDevice;

IDirect3DVertexBuffer9 *g_pVB;

TCHAR szTitle[MAX_LOADSTRING];

TCHAR szWindowClass[MAX_LOADSTRING];

ATOM MyRegisterClass(HINSTANCE hInstance);

BOOL InitInstance(HINSTANCE, int);

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

LRESULT CALLBACK About(HWND, UINT, WPARAM, LPARAM);

void OnIdle( void );

void OnCreate( HWND hWnd );

HRESULT InitD3D( void );

HRESULT CreateObject( void );

void ReleaseD3D( void );

HRESULT SetModalMatrix( void );

HRESULT SetProjMatrix( WORD wWidth, WORD wHeight );

void BeforePaint( void );

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)


{

MSG msg;

HACCEL hAccelTable;

LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);

LoadString(hInstance, IDC_D3DTEST, szWindowClass, MAX_LOADSTRING);

MyRegisterClass(hInstance);

if (!InitInstance (hInstance, nCmdShow))

{

return FALSE;

}

hAccelTable = LoadAccelerators(hInstance, (LPCTSTR)IDC_D3DTEST);

while ( true )

{

if ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )

{

if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))

{

TranslateMessage(&msg);

DispatchMessage(&msg);

}

continue;

}

if ( WM_QUIT == msg.message )

{

break;

}

OnIdle();

}

UnregisterClass( szWindowClass, g_hInst );

return (int)msg.wParam;

}

ATOM MyRegisterClass( HINSTANCE hInstance )

{

WNDCLASSEX wcex;

wcex.cbSize = sizeof(WNDCLASSEX);

wcex.style = CS_HREDRAW | CS_VREDRAW;

wcex.lpfnWndProc = (WNDPROC)WndProc;

wcex.cbClsExtra = 0;

wcex.cbWndExtra = 0;

wcex.hInstance = hInstance;

wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_D3DTEST);

wcex.hCursor = LoadCursor(NULL, IDC_ARROW);

wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);

wcex.lpszMenuName = (LPCTSTR)IDC_D3DTEST;

wcex.lpszClassName = szWindowClass;

wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);


return RegisterClassEx(&wcex);

}

BOOL InitInstance( HINSTANCE hInstance, int nCmdShow )

{

g_hInst = hInstance;

CreateWindow( szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL );

if ( !g_hWnd )

{

return FALSE;

}

ShowWindow( g_hWnd, nCmdShow );

UpdateWindow( g_hWnd );

return TRUE;

}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)

{

int wmId, wmEvent;

switch (message)

{

case WM_CREATE:

OnCreate( hWnd );

break;

case WM_COMMAND:

wmId = LOWORD(wParam);

wmEvent = HIWORD(wParam);

switch (wmId)

{

case IDM_EXIT:

DestroyWindow(hWnd);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

break;

case WM_SIZE:

SetProjMatrix( LOWORD( lParam ), HIWORD( lParam ) );

break;

case WM_DESTROY:

ReleaseD3D();

PostQuitMessage(0);

break;

default:

return DefWindowProc(hWnd, message, wParam, lParam);

}

return 0;

}

void OnCreate( HWND hWnd )

1 2 3 4 5 6 下一页
  • 上一篇教程: VC++.NET中定义和使用MFC DLL
  • 下一篇教程: VC++.NET开发环境整合技巧
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.