资源简介
D3D11绘图基础,实现一个简单的场景:旋转的彩色立方体的源代码。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include “Timer.h“
using namespace std;
//定义顶点结构
//在这个程序当中,我们只需要顶点坐标及颜色值
struct Vertex
{
XMFLOAT3 pos;
XMFLOAT4 color;
};
//定义几个常见的颜色值,方便在程序中使用
//这里用到XMVECTORF32结构,在定义常量的XMVECTOR时使用,用它可以在创建变量时直接初始化且可以转化为XMVECTOR。
//如果对XMVECTORF32有疑问,可以参考我的前几篇博文:【D3D11游戏编程】学习笔记二:XNAMath之XMVECTOR。
const XMVECTORF32 White = {1.0f 1.0f 1.0f 1.0f};
const XMVECTORF32 Black = {0.0f 0.0f 0.0f 1.0f};
const XMVECTORF32 Red = {1.0f 0.0f 0.0f 1.0f};
const XMVECTORF32 Green = {0.0f 1.0f 0.0f 1.0f};
const XMVECTORF32 Blue = {0.0f 0.0f 1.0f 1.0f};
const XMVECTORF32 Yellow = {1.0f 1.0f 0.0f 1.0f};
const XMVECTORF32 Cyan = {0.0f 1.0f 1.0f 1.0f};
const XMVECTORF32 Magenta = {1.0f 0.0f 1.0f 1.0f};
const XMVECTORF32 Silver = {0.75f0.75f0.75f1.0f};
//重要的全局变量
//在后面学习过程中,这些全局将作为框架类的成员变量存在
HINSTANCE g_hInstance(NULL);
HWND g_hWnd(NULL);
wstring g_clsName(L“d3d11“);
wstring g_wndtitle(L“D3D11绘图基础:旋转的彩色立方体“);
UINT g_winWidth(640);
UINT g_winHeight(480);
//定时器
Timer g_timer;
//帧率
size_t g_frameRate;
//D3D11基础全局变量
ID3D11Device *g_device(NULL);
ID3D11DeviceContext *g_deviceContext(NULL);
IDXGISwapChain *g_swapChain(NULL);
ID3D11DepthStencilView *g_depthStencilView(NULL);
ID3D11RenderTargetView *g_renderTargetView(NULL);
//D3D11应用全局变量
ID3D11InputLayout *g_inputLayout(NULL);
ID3D11Buffer *g_VB(NULL);
ID3D11Buffer *g_IB(NULL);
ID3DX11Effect *g_effect(NULL);
ID3DX11EffectMatrixVariable *g_fxWorldViewProj(NULL);
//初始化
BOOL InitWin32();
//初始化D3D
BOOL InitD3D();
//应用初始化
BOOL InitApp();
//场景更新
void Update(float delta);
//场景绘制
void Render();
//主循环
int Run();
//计算帧率
void CalculateFPS();
//回收资源
void Release();
LRESULT CALLBACK WinProc(HWND hwnd UINT msg WPARAM wParam LPARAM lParam);
//程序入口
int WINAPI WinMain(HINSTANCE hInstance HINSTANCE hPrevInstance LPSTR cmdLine int cmdShow)
{
g_hInstance = hInstance;
if(!InitWin32())
return -1;
if(!InitD3D())
return -1;
if(!InitApp())
return -1;
return Run();
}
BOOL InitWin32()
{
//创建窗口类
WNDCLASS wndcls;
wndcls.cbClsExtra = 0;
wndcls.cbWndExtra = 0;
wndcls.hbrBackground = (HBRUSH)GetStockobject(NULL_BRUSH);
wndcls.hCursor = LoadCursor(NULLIDC_ARROW);
wndcls.hIcon = LoadIcon(NULLIDI_APPLICATION);
wndcls.hInstance = g_hInstance;
wndcls.lpfnWndProc = WinProc;
wndcls.lpszClassName = g_clsName.c_str();
wndcls.lpszMenuName = NULL;
wndcls.style = CS_HREDRAW | CS_VREDRAW;
//注册窗口类
if(!RegisterClass(&wndcls))
{
MessageBox(NULLL“窗口注册失败!“L“错误“MB_OK);
return FALSE;
}
//创建窗口
g_hWnd = CreateWindow(g_clsName.c_str()
g_wndtitle.c_str()
WS_OVERLAPPEDWINDOW
CW_USEDEFAULTCW_USEDEFAULT
g_winWidthg_winHeight
NULL
NULL
g_
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-12-16 05:04 BasicDraw\
文件 240640 2012-12-16 04:56 BasicDraw\代码及可执行文件(64位)\basicDraw.exe
文件 908 2012-12-13 21:41 BasicDraw\代码及可执行文件(64位)\Timer.h
文件 2458 2012-12-13 22:20 BasicDraw\代码及可执行文件(64位)\Timer.cpp
文件 574 2012-12-16 04:09 BasicDraw\代码及可执行文件(64位)\FX\BasicDraw.fx
目录 0 2012-12-16 04:50 BasicDraw\代码及可执行文件(64位)\FX\
文件 14826 2012-12-16 04:55 BasicDraw\代码及可执行文件(64位)\BasicDraw.cpp
目录 0 2012-12-16 05:04 BasicDraw\代码及可执行文件(64位)\
文件 305 2012-12-16 05:02 BasicDraw\注意.txt
文件 14826 2012-12-16 04:55 BasicDraw\BasicDraw.cpp
目录 0 2012-12-16 04:50 BasicDraw\FX\
文件 574 2012-12-16 04:09 BasicDraw\FX\BasicDraw.fx
文件 2458 2012-12-13 22:20 BasicDraw\Timer.cpp
文件 908 2012-12-13 21:41 BasicDraw\Timer.h
文件 240640 2012-12-16 04:56 BasicDraw\basicDraw.exe
- 上一篇:D3D11初始化代码
- 下一篇:D3D11纹理基础
评论
共有 条评论