-
大小: 2.73MB文件类型: .rar金币: 1下载: 0 次发布日期: 2023-10-02
- 语言: 其他
- 标签: DeferShafer
资源简介
D3D11_DerfferredShading
代码片段和文件信息
#include“BitmapClass.h“
BitmapClass::BitmapClass()
{
md3dVertexBuffer=NULL; //顶点缓存
md3dIndexBuffer=NULL; //索引缓存
mVertexCount = 0;
mIndexCount = 0;
}
BitmapClass::BitmapClass(const BitmapClass& other)
{
}
BitmapClass::~BitmapClass()
{
}
bool BitmapClass::Initialize(ID3D11Device* d3dDevice int ScrrenWidth int ScrrenHeight)
{
bool result;
//初始化屏幕长宽,纹理长宽,坐标点
mScrrenWidth = ScrrenWidth;
mScrrenHeight = ScrrenHeight;
//初始化顶点缓存,索引缓存
result = InitializeBuffer(d3dDevice);
if (!result)
{
MessageBox(NULL L“Initialize Buffer failure“ L“ERROR“ MB_OK);
return false;
}
return true;
}
void BitmapClass::Shutdown()
{
ShutdownBuffer();
}
bool BitmapClass::Render(ID3D11DeviceContext* d3dDeviceContext)
{
bool result;
result = UpdateBuffers(d3dDeviceContext);
if (!result)
{
return false;
}
//设置渲染管线的顶点缓存和索引缓存(IA阶段)
RenderBuffers(d3dDeviceContext);
return true;
}
bool BitmapClass::InitializeBuffer(ID3D11Device* d3dDevice)
{
Vertex* vertexs=NULL;
WORD*indices=NULL; //一个字为两个字节
mVertexCount = 6;
mIndexCount = 6;
//创建顶点数组
vertexs = new Vertex[mVertexCount];
if (!vertexs)
return false;
//创建索引数组
indices = new WORD[mIndexCount];
if (!indices)
return false;
//初始化顶点数组为0
memset(vertexs 0 sizeof(Vertex)*mVertexCount);
//赋予索引数组数据
//注意用左手定则判定是不是背面
indices[0] = 0;
indices[1] = 1;
indices[2] = 2;
indices[3] = 3;
indices[4] = 4;
indices[5] = 5;
//第一填充(顶点)缓存形容结构体和子资源数据结构体并创建顶点缓存(这里用的是动态缓存)
D3D11_BUFFER_DESC vertexBufferDesc;
vertexBufferDesc.Usage = D3D11_USAGE_DYNAMIC;
vertexBufferDesc.ByteWidth = sizeof(Vertex) * mVertexCount;
vertexBufferDesc.BindFlags = D3D11_BIND_VERTEX_BUFFER;
vertexBufferDesc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE;
vertexBufferDesc.MiscFlags = 0;
vertexBufferDesc.StructureByteStride = 0;
D3D11_SUBRESOURCE_DATA vertexData;
vertexData.pSysMem = vertexs;
vertexData.SysMemPitch = 0;
vertexData.SysMemSlicePitch = 0;
HR(d3dDevice->CreateBuffer(&vertexBufferDesc &vertexData &md3dVertexBuffer));
//第二填充(索引)缓存形容结构体和子资源数据结构体并创建索引缓存
D3D11_BUFFER_DESC indexBufferDesc;
indexBufferDesc.Usage = D3D11_USAGE_DEFAULT;
indexBufferDesc.ByteWidth = sizeof(WORD) * mIndexCount;
indexBufferDesc.BindFlags = D3D11_BIND_INDEX_BUFFER;
indexBufferDesc.CPUAccessFlags = 0;
indexBufferDesc.MiscFlags = 0;
indexBufferDesc.StructureByteStride = 0;
D3D11_SUBRESOURCE_DATA indexData;
indexData.pSysMem = indices;
indexData.SysMemPitch = 0;
indexData.SysMemSlicePitch = 0;
HR(d3dDevice->CreateBuffer(&indexBufferDesc &indexData &md3dIndexBuffer));
//释放顶点数组和索引数组(这时数据已经载入缓存不需要这些数组了)
delete[]vertexs;
vertexs = NULL;
delete[]indices;
indices = NULL;
return true;
}
void BitmapClass::ShutdownBuffer()
{
//释放顶点缓存和索引缓存
ReleaseCOM(md3dIndexBuffer);
ReleaseCOM(md3dVertexBuffer);
}
void BitmapClass::RenderBuffers(ID3D11Devi
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1993 2016-11-15 21:19 LightShaderClass.h
文件 228 2016-10-01 17:07 Macro.h
文件 5955 2016-10-02 22:51 ModelClass.cpp
文件 1617 2016-10-02 21:40 ModelClass.h
文件 5840 2016-09-30 23:41 SystemClass.cpp
文件 1196 2016-09-27 11:56 SystemClass.h
文件 496 2016-10-01 17:12 TexClass.cpp
文件 446 2016-10-01 17:11 TexClass.h
文件 466 2016-09-27 11:37 源.cpp
文件 1321 2016-11-15 20:44 MyShader\DefferredShader.fx
文件 1707 2016-11-15 21:45 MyShader\LightShader.fx
文件 11635040 2016-10-03 01:58 Texture\food.dds
文件 1427 2016-10-10 01:05 Txt\cube.txt
文件 5445 2016-10-24 01:02 BitmapClass.cpp
文件 1136 2016-10-23 17:50 BitmapClass.h
文件 2468 2016-11-15 21:18 CameraClass.h
文件 12421 2016-11-15 20:45 D3DClass.cpp
文件 2289 2016-11-15 20:01 D3DClass.h
文件 5432 2016-11-15 20:57 DefferredBufferClass.cpp
文件 1097 2016-11-15 21:11 DefferredBufferClass.h
文件 7582 2016-11-15 18:58 DefferredShaderClass.cpp
文件 1707 2016-11-15 18:55 DefferredShaderClass.h
文件 7186 2016-11-15 21:42 GraphicsClass.cpp
文件 1292 2016-11-15 19:47 GraphicsClass.h
文件 497 2016-09-27 11:27 InputClass.cpp
文件 372 2016-09-27 11:11 InputClass.h
文件 583 2016-10-03 02:10 LightClass.cpp
文件 508 2016-10-03 02:09 LightClass.h
文件 8695 2016-11-15 21:44 LightShaderClass.cpp
目录 0 2016-11-15 21:45 MyShader
............此处省略5个文件信息
- 上一篇:大漠插件7.1822
- 下一篇:Qt:Qt实现飞秋拦截助手—ARP攻击 完整项目代码
评论
共有 条评论