没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
DirectX 11 SDK
文档(一)
分类:Winows APICDirectX2011-04-23 10:231373 人阅读评论(0)收藏举报
文档 applicationnulldirect3dcallback 工作
总结
这是一个初步的教程。我们将通过必要的步骤来创建一个 Win32
Application。我们创建一个空白的窗口为 DirectX 11 做准备。
创建窗口
每一个窗口应用程序需要至少一个窗口对象。甚至在开始获得
DirectX 11 的诸多细节之前,我们的 Application 必须要有一个工作着
的窗口。我们有三个事情要做:
1.注册一个窗口类
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance,
(LPCTSTR)IDI_TUTORIAL1);//这个是资源图标,需要资源载入
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = NULL;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance,
(LPCTSTR)IDI_TUTORIAL1);
if( !RegisterClassEx(&wcex) )
return FALSE;
2.创建一个窗口对象
g_hInst = hInstance; //用全局变量来保存应用程序实例句柄
RECT rc = { 0, 0, 640, 480 };
AdjustWindowRect( &rc, WS_OVERLAPPEDWINDOW,
FALSE );//根据窗口风格,以 rc 为客户区调整整个窗口大小
g_hWnd = CreateWindow( szWindowClass, L"Direct3D 11
Tutorial 0: Setting Up Window",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT,
rc.right - rc.left, rc.bottom - rc.top,
NULL, NULL,
hInstance, NULL);
if( !g_hWnd )
return FALSE;
ShowWindow( g_hWnd, nCmdShow );
3.检索和调度这个窗口的消息队列的消息
MSG msg = {0};
while( GetMessage( &msg, NULL, 0, 0 ) {
TranslateMessage( &msg );
DispatchMessage( &msg );
}
LRESULT CALLBACK WndProc( HWND hWnd, UINT
message, WPARAM wParam, LPARAM lParam ){
PAINTSTRUCT ps;
HDC hdc;
switch (message){
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
EndPaint(hWnd, &ps);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hWnd, message, wParam,
lParam);
}
return 0;
}
对于每个窗口应用程序,这是最少的步骤来创建一个窗口对象。如
果我们编译运行这个代码,我们将看到一个空的白色背景的窗口。
DirectX 11 SDK
文档(二)
分类:Winows APICDirectX2011-04-23 11:431750 人阅读评论(0)收藏举报
文档 direct3dnullfloatoutputc
总结
这是第一个教程,我们将通过必要的元素来创建一个小型的 DirectX 11 应用
程序。每个 DirectX 11 应用程序必须拥有这些元素得以正常运转。这些元素包
括创建一个窗口对象和设备对象,并且能够显示一种颜色的窗口。
创建 DirectX 11 设备
创建窗口对象和消息循环请参见 DirectX 11 SDK 文档(一)。现在我们有
一个能够显示的窗口,接下来我们能够创建 Direct3D 11 设备。如果我们要渲
染 3D 的场景,创建设备是必须的。第一件事要做的就是创建以下三个对象:
device,immediate context,交换链。immediate context 在 Direct3D 11 是一
个新的对象。
在 Direct3D 10 中 device 对象被用来渲染场景和创建资源。在 Direct3D 11
中 immediate context 被应用程序用来将场景渲染到缓冲区里,而 device 有很
多创建资源的函数。
交换链负责交换 device 渲染的场景所存放缓冲区,并且能够将要显示的内
容呈现在屏幕上。交换链将包含两个或更多的缓冲区,主要包含前景缓冲区和
背景缓冲区。前景缓冲区就是用户当前在屏幕上所看到的。前景缓冲区是只读,
并且不能被修改。背景缓冲区就是 device 所渲染场景的目标位置。一旦完成了
绘制操作,交换链通过交换两个缓冲区将背景缓冲区的内容呈现在屏幕上。这
时背景缓冲区变成了前景缓冲区,而前景缓冲区变成了背景缓冲区。
为了创建交换链,我们填充一个 DXGI_SWAPCHAIN_DESC 结构体,
DXGI_SWAPCHAIN_DESC 结构体描述了我们要创建交换链的对象属性。
DXGI_SWAPCHAIN_DESC 结构体的变量虽然多,但是我们只要关心一小部分
就可以了。BackBufferUsage 标记应用程序将如何使用背景缓冲区。在这个例
子中,我们要渲染这个背景缓冲区,所以我们将 BackBufferUsage 赋值为
DXGI_USAGE_RENDER_TARGET_OUTPUT。OutputWindow 代表窗口,该
窗口是交换链将图像呈现的区域。SampleDesc 用来支持多采样,既然这个例
子备没有使用多采样,所以将
SampleDesc.Count=1,SampleDesc.Quality=0。
一旦 DXGI_SWAPCHAIN_DESC 结构体被填好,我们就可以调用
D3D11CreateDeviceAndSwapChain()函数为我们创建 device 和交换链。代码
如下:
DXGI_SWAP_CHAIN_DESC sd;
ZeroMemory( &sd, sizeof(sd) );
sd.BufferCount = 1;
sd.BufferDesc.Width = 640;
sd.BufferDesc.Height = 480;
剩余62页未读,继续阅读
资源评论
尔玉_5700
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功