• 大小: 174KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: 其他
  • 标签: D3D11  绘图基础  

资源简介

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

评论

共有 条评论