Direct3D9基本框架
来源:互联网 发布:申请淘宝客服介入处理 编辑:程序博客网 时间:2024/04/29 09:25
1#include<d3dx9.h>
2#include<d3d9.h>
3
4
5
6#pragma comment(lib,"d3dx9.lib")
7#pragma comment(lib,"d3d9.lib")
8
9
10#define MAX_LOADSTRING 100
11
12
13HINSTANCE hInst;
14TCHAR szTitle[MAX_LOADSTRING]=TEXT("D3D");
15TCHAR szWindowClass[MAX_LOADSTRING]=TEXT("HelloD3D");
16
17
18
19ATOM MyRegisterClass(HINSTANCE hInstance);
20BOOL InitInstance(HINSTANCE, int);
21LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
22
23
24
25HWND g_hWnd=NULL;
26
27IDirect3D9 *pD3D=NULL;
28IDirect3DDevice9 *pDevice=NULL;
29
30
31bool InitD3D();
32void Release();
33void Render();
34
35
36
37int APIENTRY WinMain(HINSTANCE hInstance,
38 HINSTANCE hPrevInstance,
39 LPSTR lpCmdLine,
40 int nCmdShow)
41{
42 MSG msg;
43
44 MyRegisterClass(hInstance);
45
46 if (!InitInstance (hInstance, nCmdShow))
47 {
48 return FALSE;
49 }
50
51 if(!InitD3D())
52 {
53 return -1;
54 }
55
56 ZeroMemory(&msg,sizeof(msg));
57
58 while (msg.message!=WM_QUIT)
59 {
60 if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
61 {
62 TranslateMessage(&msg);
63 DispatchMessage(&msg);
64
65 }
66 else
67 {
68 Render();
69 }
70 }
71
72 return (int)msg.wParam;
73}
74
75
76ATOM MyRegisterClass(HINSTANCE hInstance)
77{
78 WNDCLASSEX wcex;
79
80 wcex.cbSize = sizeof(WNDCLASSEX);
81
82 wcex.style = CS_HREDRAW | CS_VREDRAW;
83 wcex.lpfnWndProc = (WNDPROC)WndProc;
84 wcex.cbClsExtra = 0;
85 wcex.cbWndExtra = 0;
86 wcex.hInstance = hInstance;
87 wcex.hIcon = NULL;
88 wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
89 wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
90 wcex.lpszMenuName = NULL;
91 wcex.lpszClassName = szWindowClass;
92 wcex.hIconSm = NULL;
93 return RegisterClassEx(&wcex);
94}
95
96
97BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
98{
99 HWND hWnd;
100
101 hInst = hInstance;
102
103 hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
104 CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
105
106 if (!hWnd)
107 {
108 return FALSE;
109 }
110
111 g_hWnd=hWnd;
112
113 ShowWindow(hWnd, nCmdShow);
114 UpdateWindow(hWnd);
115
116 return TRUE;
117}
118
119
120LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
121{
122 switch (message)
123 {
124 case WM_DESTROY:
125 Release();
126 PostQuitMessage(0);
127 break;
128 default:
129 return DefWindowProc(hWnd, message, wParam, lParam);
130 }
131 return 0;
132}
133
134
135void Release()
136{
137 if(pDevice!=NULL)
138 pDevice->Release();
139 if(pD3D!=NULL)
140 pD3D->Release();
141}
142
143
144bool InitD3D()
145{
146 pD3D=Direct3DCreate9(D3D_SDK_VERSION);
147
148 if(pD3D==NULL)
149 {
150 MessageBox(NULL,TEXT("pD3D init failed"),TEXT("error"),MB_OK);
151 return false;
152 }
153
154 D3DPRESENT_PARAMETERS d3dpp;
155
156 ZeroMemory( &d3dpp, sizeof(d3dpp) );
157 d3dpp.Windowed = TRUE;
158 d3dpp.SwapEffect = D3DSWAPEFFECT_COPY;
159
160
161
162 HRESULT hr;
163 hr=pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,
164 g_hWnd,
165 D3DCREATE_SOFTWARE_VERTEXPROCESSING,
166 &d3dpp,
167 &pDevice);
168
169 if(FAILED(hr))
170 {
171 MessageBox(NULL,TEXT("create device failed"),TEXT("error"),MB_OK);
172 return false;
173 }
174
175 return true;
176}
177
178
179
180void Render()
181{
182 if(pDevice==NULL)
183 {
184 return ;
185 }
186
187 pDevice->Clear(1,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0f,0);
188
189 pDevice->Present(NULL,NULL,NULL,NULL);
190
191}
192
193
2#include<d3d9.h>
3
4
5
6#pragma comment(lib,"d3dx9.lib")
7#pragma comment(lib,"d3d9.lib")
8
9
10#define MAX_LOADSTRING 100
11
12
13HINSTANCE hInst;
14TCHAR szTitle[MAX_LOADSTRING]=TEXT("D3D");
15TCHAR szWindowClass[MAX_LOADSTRING]=TEXT("HelloD3D");
16
17
18
19ATOM MyRegisterClass(HINSTANCE hInstance);
20BOOL InitInstance(HINSTANCE, int);
21LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
22
23
24
25HWND g_hWnd=NULL;
26
27IDirect3D9 *pD3D=NULL;
28IDirect3DDevice9 *pDevice=NULL;
29
30
31bool InitD3D();
32void Release();
33void Render();
34
35
36
37int APIENTRY WinMain(HINSTANCE hInstance,
38 HINSTANCE hPrevInstance,
39 LPSTR lpCmdLine,
40 int nCmdShow)
41{
42 MSG msg;
43
44 MyRegisterClass(hInstance);
45
46 if (!InitInstance (hInstance, nCmdShow))
47 {
48 return FALSE;
49 }
50
51 if(!InitD3D())
52 {
53 return -1;
54 }
55
56 ZeroMemory(&msg,sizeof(msg));
57
58 while (msg.message!=WM_QUIT)
59 {
60 if(PeekMessage(&msg,NULL,0,0,PM_REMOVE))
61 {
62 TranslateMessage(&msg);
63 DispatchMessage(&msg);
64
65 }
66 else
67 {
68 Render();
69 }
70 }
71
72 return (int)msg.wParam;
73}
74
75
76ATOM MyRegisterClass(HINSTANCE hInstance)
77{
78 WNDCLASSEX wcex;
79
80 wcex.cbSize = sizeof(WNDCLASSEX);
81
82 wcex.style = CS_HREDRAW | CS_VREDRAW;
83 wcex.lpfnWndProc = (WNDPROC)WndProc;
84 wcex.cbClsExtra = 0;
85 wcex.cbWndExtra = 0;
86 wcex.hInstance = hInstance;
87 wcex.hIcon = NULL;
88 wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
89 wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
90 wcex.lpszMenuName = NULL;
91 wcex.lpszClassName = szWindowClass;
92 wcex.hIconSm = NULL;
93 return RegisterClassEx(&wcex);
94}
95
96
97BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
98{
99 HWND hWnd;
100
101 hInst = hInstance;
102
103 hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
104 CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);
105
106 if (!hWnd)
107 {
108 return FALSE;
109 }
110
111 g_hWnd=hWnd;
112
113 ShowWindow(hWnd, nCmdShow);
114 UpdateWindow(hWnd);
115
116 return TRUE;
117}
118
119
120LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
121{
122 switch (message)
123 {
124 case WM_DESTROY:
125 Release();
126 PostQuitMessage(0);
127 break;
128 default:
129 return DefWindowProc(hWnd, message, wParam, lParam);
130 }
131 return 0;
132}
133
134
135void Release()
136{
137 if(pDevice!=NULL)
138 pDevice->Release();
139 if(pD3D!=NULL)
140 pD3D->Release();
141}
142
143
144bool InitD3D()
145{
146 pD3D=Direct3DCreate9(D3D_SDK_VERSION);
147
148 if(pD3D==NULL)
149 {
150 MessageBox(NULL,TEXT("pD3D init failed"),TEXT("error"),MB_OK);
151 return false;
152 }
153
154 D3DPRESENT_PARAMETERS d3dpp;
155
156 ZeroMemory( &d3dpp, sizeof(d3dpp) );
157 d3dpp.Windowed = TRUE;
158 d3dpp.SwapEffect = D3DSWAPEFFECT_COPY;
159
160
161
162 HRESULT hr;
163 hr=pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,
164 g_hWnd,
165 D3DCREATE_SOFTWARE_VERTEXPROCESSING,
166 &d3dpp,
167 &pDevice);
168
169 if(FAILED(hr))
170 {
171 MessageBox(NULL,TEXT("create device failed"),TEXT("error"),MB_OK);
172 return false;
173 }
174
175 return true;
176}
177
178
179
180void Render()
181{
182 if(pDevice==NULL)
183 {
184 return ;
185 }
186
187 pDevice->Clear(1,NULL,D3DCLEAR_TARGET,D3DCOLOR_XRGB(0,0,0),1.0f,0);
188
189 pDevice->Present(NULL,NULL,NULL,NULL);
190
191}
192
193
- Direct3D9基本框架
- Direct3D9初级教程
- Direct3D9初始化
- 基本框架
- Direct3D9渲染管线
- Direct3D9 教程01
- Direct3D9 教程02
- Direct3D9 教程03
- 深入理解Direct3D9
- 深入理解Direct3D9
- 深入理解Direct3D9
- 深入理解Direct3D9
- Direct3D9 GPU Hacks
- 深入理解Direct3D9
- 深入理解Direct3D9
- 深入理解Direct3D9
- 深入理解Direct3D9
- 深入理解Direct3D9
- QQ输入状态漏洞,让你的好友死在温柔的问候中[转]
- 我常去的编程技术网站
- TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞(转载)
- 什么叫打洞
- STUN, STUNT, XSTUNT 介绍
- Direct3D9基本框架
- Extjs 对tabPanel中的第一个Panel进行布局 让里面的面板具有拖拽效果
- 将字符串转化为指定编码格式的字节
- Creat & Use Android Button -利用BUTTON 跳转ACTIVITY
- WatiN系列之一 初识Watin
- 新人报道
- WatiN系列之二 解析Watin
- 他山之石 可以攻玉-《海量数据库解决方案》
- Linux多线程编程实例