资源简介
使用dx11 加载obj 文件 的示例。vs2012编译运行。所需 dx sdk 为 Microsoft DirectX SDK (June 2010) 。编译运行后 按住鼠标右键,移动鼠标可以进行视角变换,使用w、s、a、d进行方向移动(此时鼠标右键一直处于按下状态,否则无法移动)
代码片段和文件信息
#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 WCHAR* TextureFileName int bitmapWidth int bitmapHeight)
{
bool result;
//第一初始化屏幕长宽,纹理长宽,坐标点
mScrrenWidth = ScrrenWidth;
mScrrenHeight = ScrrenHeight;
mBitmapWith = bitmapWidth;
mBitmapHeight = bitmapHeight;
mPreviousPosX = -1;
mPreviousPosY = -1;
//第二初始化顶点缓存,索引缓存
result = InitializeBuffer(d3dDevice);
if (!result)
{
MessageBox(NULL L“Initialize Buffer failure“ L“ERROR“ MB_OK);
return false;
}
//第三加载纹理
result = LoadTexture(d3dDevice TextureFileName);
if (!result)
{
MessageBox(NULL L“ LoadTexture failure“ L“ERROR“ MB_OK);
return false;
}
return true;
}
void BitmapClass::Shutdown()
{
ReleaseTexture();
ShutdownBuffer();
}
bool BitmapClass::Render(ID3D11DeviceContext* d3dDeviceContextint positionX int positionY)
{
bool result;
result = UpdateBuffers(d3dDeviceContextpositionXpositionY);
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.Sy
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6620 2017-01-15 01:43 D3D11_LoadOBJ\BitmapClass.cpp
文件 1602 2017-01-15 01:43 D3D11_LoadOBJ\BitmapClass.h
文件 8655 2016-12-24 09:55 D3D11_LoadOBJ\ColorShaderClass.cpp
文件 1953 2016-12-24 09:54 D3D11_LoadOBJ\ColorShaderClass.h
文件 268 2017-01-14 19:20 D3D11_LoadOBJ\CommonVertexFormat.h
文件 1269 2016-10-07 19:15 D3D11_LoadOBJ\CPUClass.cpp
文件 518 2016-10-07 19:46 D3D11_LoadOBJ\CPUClass.h
文件 1946 2017-02-23 22:28 D3D11_LoadOBJ\CubeMapCameraClass.cpp
文件 646 2017-02-23 22:28 D3D11_LoadOBJ\CubeMapCameraClass.h
文件 6725 2017-02-23 22:29 D3D11_LoadOBJ\CubeMapRenderModelToTexure.cpp
文件 1576 2017-02-23 21:00 D3D11_LoadOBJ\CubeMapRenderModelToTexure.h
文件 16081 2017-02-23 00:53 D3D11_LoadOBJ\D3DClass.cpp
文件 2856 2017-02-23 00:53 D3D11_LoadOBJ\D3DClass.h
文件 5678 2016-12-20 23:59 D3D11_LoadOBJ\FirstCameraClass.cpp
文件 1620 2016-12-21 19:44 D3D11_LoadOBJ\FirstCameraClass.h
文件 1127 2016-12-24 09:58 D3D11_LoadOBJ\FontClass.h
文件 3682 2016-12-24 09:58 D3D11_LoadOBJ\FontlClass.cpp
文件 8697 2016-12-24 09:55 D3D11_LoadOBJ\FontShaderClass.cpp
文件 1534 2016-12-24 09:54 D3D11_LoadOBJ\FontShaderClass.h
文件 460 2016-10-07 17:08 D3D11_LoadOBJ\FPSClass.cpp
文件 390 2016-10-07 16:59 D3D11_LoadOBJ\FPSClass.h
文件 7875 2017-01-02 14:59 D3D11_LoadOBJ\FrustumClass.cpp
文件 983 2016-11-12 23:28 D3D11_LoadOBJ\FrustumClass.h
文件 24999 2017-03-01 00:14 D3D11_LoadOBJ\GraphicsClass.cpp
文件 2241 2017-02-27 21:09 D3D11_LoadOBJ\GraphicsClass.h
文件 5028 2016-12-20 23:26 D3D11_LoadOBJ\InputClass.cpp
文件 1492 2017-01-20 09:49 D3D11_LoadOBJ\InputClass.h
文件 775 2016-12-24 19:58 D3D11_LoadOBJ\LightClass.cpp
文件 612 2016-12-24 19:58 D3D11_LoadOBJ\LightClass.h
文件 298 2016-12-14 00:15 D3D11_LoadOBJ\Macro.h
............此处省略368个文件信息
- 上一篇:野火stm32-库开发高级篇-例程part1
- 下一篇:算法设计与分析第二版郑宗汉等
相关资源
-
Nonlinear Multiob
jective Optimization高清 - OpenGL读取显示obj文件并渲染
- obj格式3D模型
- Objc中国上的书swift4
-
Remob
jects SDK and DA Full source for Delp - obj加载/三维图像拖动放大缩小旋转
- faster_rcnn_inception_v2_coco_2018_01_28.tar.g
-
ob
jective-C程序设计 第6版 完整版 - masOSObjc.pdf
-
AutoCAD 2014 ob
jectARX API手册 开发文档 -
ob
jective-C程序设计中文带完整书签第 -
mapob
jectv2.4 全部带破解 -
Mapob
jectV2.4及注册机 - IOS五子棋小
-
ldap提示ob
ject class violation -
ob
jective-C苹果官方文档英文文档 - OBJ文件茶壶
- OPENGL读取显示obj模型_VS2010
- libx.exe 从vc COFF格式的.lib静态库提取
- 读取offobj格式数据 可视化3D模型
-
Rocket Dock / ob
ject Dock Tray 系统托盘图 - threejs加载obj文件
- iOS 表格Demo
-
ios苹果app开发入门ob
ject-cdemo14个 - 读取obj文件含顶点法线,2013编译通过
-
mapob
jects2.4破解版 - obj模型的读取
- glm.cpp、glm.h用于opengl读取obj文件
-
ob
jectarx wizard 2012配置与helloworld - D3D11程序框架
评论
共有 条评论