前田稔(Maeda Minoru)の超初心者のプログラム入門
VertexPosition *Vertices = new VertexPosition[vtx_size]; unsigned short *Indices = new unsigned short[vtx_size]; |
public: Load_Vertex(const std::shared_ptr<DX::DeviceResources>& deviceResources); ~Load_Vertex(); void Load(Platform::String ^str); VertexPosition *m_Vertex; unsigned short *m_Index; uint32 m_indexCount; |
void Load_Vertex::Load(Platform::String ^str) { ・・・ // 法線ベクトルの計算 if (m_idxN3.size()<vtx_size) ComputeNorm(m_Vertex, vtx_size); } |
Load_Vertex::~Load_Vertex() { if (m_Vertex) delete m_Vertex; if (m_Index) delete m_Index; } |
auto createCubeTask = (createPSTask && createVSTask).then([this] () { model = new Load_Vertex(m_deviceResources); model->Load("Dolphin1.x"); CreateModel(model->m_Vertex, model->m_Index, model->m_indexCount); }); // メッシュが読み込まれたら、オブジェクトを描画する準備が完了します。 createCubeTask.then([this] () { m_loadingComplete = true; }); |
// モデルを生成 void Sample3DSceneRenderer::CreateModel( VertexPosition *Vertices, uint16 *Indices, uint32 indexCount) { D3D11_SUBRESOURCE_DATA vertexBufferData = { 0 }; vertexBufferData.pSysMem = Vertices; vertexBufferData.SysMemPitch = 0; vertexBufferData.SysMemSlicePitch = 0; CD3D11_BUFFER_DESC vertexBufferDesc(sizeof(VertexPosition)*indexCount, D3D11_BIND_VERTEX_BUFFER); DX::ThrowIfFailed( m_deviceResources->GetD3DDevice()->CreateBuffer( &vertexBufferDesc, &vertexBufferData, &m_vertexBuffer )); D3D11_SUBRESOURCE_DATA indexBufferData = { 0 }; indexBufferData.pSysMem = Indices; indexBufferData.SysMemPitch = 0; indexBufferData.SysMemSlicePitch = 0; CD3D11_BUFFER_DESC indexBufferDesc(indexCount * 2, D3D11_BIND_INDEX_BUFFER); DX::ThrowIfFailed( m_deviceResources->GetD3DDevice()->CreateBuffer( &indexBufferDesc, &indexBufferData, &m_indexBuffer)); } |
// カリング設定 D3D11_RASTERIZER_DESC rasterizerDesc; ZeroMemory(&rasterizerDesc, sizeof(D3D11_RASTERIZER_DESC)); //rasterizerDesc.CullMode = D3D11_CULL_BACK; rasterizerDesc.CullMode = D3D11_CULL_FRONT; rasterizerDesc.FillMode = D3D11_FILL_SOLID; rasterizerDesc.DepthClipEnable = FALSE; rasterizerDesc.MultisampleEnable = TRUE; rasterizerDesc.DepthBiasClamp = 0; rasterizerDesc.SlopeScaledDepthBias = 0; DX::ThrowIfFailed( m_deviceResources->GetD3DDevice()->CreateRasterizerState( &rasterizerDesc, &m_RasterizerState)); context->RSSetState(m_RasterizerState); // オブジェクトを描画します。 context->DrawIndexed(model->m_indexCount, 0, 0); } |
[Next Chapter ↓] Animation
[Previous Chapter ↑] Dolphin Model