void PlanetObject::Init(ID3D11Device* device, ID3D11DeviceContext* dc, Camera *cam) { mTerrainType.resize(4); mEnviromentalType.resize(1); /*Nastaveni materialu povrchu, ne vsechny typy terrenu jsou v soucasnosti v programu aktivni*/ mTerrainType.at(0).SetMat(XMFLOAT4(0.113f, 0.15f, 0.115f, 1.0f), XMFLOAT4(0.29f, 0.52f, 0.265f, 1.0f), XMFLOAT4(0.25f, 0.25f, 0.25f, 1.0f), XMFLOAT4(0.3f, 0.3f, 0.3f, 1.0f), 0.32f, 0.25f); mTerrainType.at(1).SetMat(XMFLOAT4(0.135f, 0.15f, 0.115f, 1.0f), XMFLOAT4(0.39f, 0.52f, 0.265f, 1.0f), XMFLOAT4(0.25f, 0.25f, 0.25f, 1.0f), XMFLOAT4(0.3f, 0.3f, 0.3f, 1.0f), 0.32f, 0.25f); mTerrainType.at(2).SetMat(XMFLOAT4(0.17f, 0.14f, 0.125f, 1.0f), XMFLOAT4(0.45f, 0.62f, 0.37f, 1.0f), XMFLOAT4(0.25f, 0.25f, 0.25f, 1.0f), XMFLOAT4(0.3f, 0.3f, 0.3f, 1.0f), 0.32f, 0.25f); mTerrainType.at(3).SetMat(XMFLOAT4(0.15f, 0.145f, 0.14f, 1.0f), XMFLOAT4(0.42f, 0.405f, 0.385f, 1.0f), XMFLOAT4(0.25f, 0.25f, 0.25f, 1.0f), XMFLOAT4(0.3f, 0.3f, 0.3f, 1.0f), 0.32f, 0.25f); mEnviromentalType.at(0).SetEnviromental(1, 0, 90, 47); std::vector<TerrainPoint> heightMap; heightMap.resize(pow(static_cast<float>(NUMGRIDINROW + 24), 2.0f)); BuildBuffers(device); std::vector<UINT> itsBuffer; std::vector<Assist> itsAssistBuffer; cam->SetPosition(0.0, 0.0, 0.0); /*Zde se vola inicialize prvniho bloku nejvyssi urovne(level == 0), double mSpacing promena udava udaj celkove delky/sirky sveta*/ mTerrainBlock.Init(device, dc, heightMap, 0, 400000.0, Coordinate(0, 0), itsBuffer, itsAssistBuffer, false, mTerrainType, mEnviromentalType); mTerrainBlock.SetIncreaseCurrentLevel(false, 0); mGameObjectsStack = new GameObjectsStack(device, dc, cam, 2000); //GameObject *testObject = new TestBody; GameObject *testObject = new TestBillboard; //GameObject *testObject = new TestBody; mGameObjectsStack->CreateObject(testObject); }
void PolygonGroup::Load(KeyedArchive * keyedArchive, SceneFileV2 * sceneFile) { DataNode::Load(keyedArchive, sceneFile); vertexFormat = keyedArchive->GetInt32("vertexFormat"); vertexStride = GetVertexSize(vertexFormat); vertexCount = keyedArchive->GetInt32("vertexCount"); indexCount = keyedArchive->GetInt32("indexCount"); textureCoordCount = keyedArchive->GetInt32("textureCoordCount"); primitiveType = (ePrimitiveType)keyedArchive->GetInt32("primitiveType"); cubeTextureCoordCount = keyedArchive->GetInt32("cubeTextureCoordCount"); int32 formatPacking = keyedArchive->GetInt32("packing"); if (formatPacking == PACKING_NONE) { int size = keyedArchive->GetByteArraySize("vertices"); if (size != vertexCount * vertexStride) { Logger::Error("PolygonGroup::Load - Something is going wrong, size of vertex array is incorrect"); return; } SafeDeleteArray(meshData); meshData = new uint8[vertexCount * vertexStride]; const uint8 * archiveData = keyedArchive->GetByteArray("vertices"); memcpy(meshData, archiveData, size); } indexFormat = keyedArchive->GetInt32("indexFormat"); if (indexFormat == EIF_16) { int size = keyedArchive->GetByteArraySize("indices"); if (size != indexCount * INDEX_FORMAT_SIZE[indexFormat]) { Logger::Error("PolygonGroup::Load - Something is going wrong, size of index array is incorrect"); return; } SafeDeleteArray(indexArray); indexArray = new int16[indexCount]; const uint8 * archiveData = keyedArchive->GetByteArray("indices"); memcpy(indexArray, archiveData, indexCount * INDEX_FORMAT_SIZE[indexFormat]); } SafeDeleteArray(textureCoordArray); textureCoordArray = new Vector2*[textureCoordCount]; SafeDeleteArray(cubeTextureCoordArray); if(cubeTextureCoordCount) { cubeTextureCoordArray = new Vector3*[cubeTextureCoordCount]; } SafeRelease(renderDataObject); renderDataObject = new RenderDataObject(); UpdateDataPointersAndStreams(); RecalcAABBox(); BuildBuffers(); }
int32 CGameObject::Initialize() { ApplyShader(); D3D11_BLEND_DESC blendDesc = {}; blendDesc.RenderTarget[0].BlendEnable = true; blendDesc.RenderTarget[0].BlendOp = D3D11_BLEND_OP_ADD; blendDesc.RenderTarget[0].SrcBlend = D3D11_BLEND_SRC_ALPHA; blendDesc.RenderTarget[0].DestBlend = D3D11_BLEND_INV_SRC_ALPHA; blendDesc.RenderTarget[0].BlendOpAlpha = D3D11_BLEND_OP_ADD; blendDesc.RenderTarget[0].SrcBlendAlpha = D3D11_BLEND_SRC_ALPHA; blendDesc.RenderTarget[0].DestBlendAlpha = D3D11_BLEND_ZERO; blendDesc.RenderTarget[0].RenderTargetWriteMask = 0x0F; float blendFactor[4] = { 0.0f, 0.0f, 0.0f, 0.0f }; theDevice->CreateBlendState( &blendDesc, &m_alphaBlendState ); theContext->OMSetBlendState( m_alphaBlendState, blendFactor, 0xFFFFFFFF ); D3D11_SAMPLER_DESC samplerDesc = {}; samplerDesc.AddressU = samplerDesc.AddressV = samplerDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP; samplerDesc.ComparisonFunc = D3D11_COMPARISON_NEVER; samplerDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR; // samplerDesc.Filter = D3D11_FILTER_ANISOTROPIC; // samplerDesc.MaxAnisotropy = 4; samplerDesc.MaxLOD = D3D11_FLOAT32_MAX; HR( theDevice->CreateSamplerState( &samplerDesc, &m_pTextureSampler ) ); ID3D11Resource* pcolorTex = 00; m_material.GetDiffuse()->GetResource( &pcolorTex ); D3D11_TEXTURE2D_DESC colorTexDesc = {}; (reinterpret_cast<ID3D11Texture2D*>(pcolorTex))->GetDesc( &colorTexDesc ); pcolorTex->Release(); BuildBuffers(); D3D11_SAMPLER_DESC colorMapDesc = {}; colorMapDesc.AddressU = colorMapDesc.AddressV = colorMapDesc.AddressW = D3D11_TEXTURE_ADDRESS_WRAP; colorMapDesc.ComparisonFunc = D3D11_COMPARISON_NEVER; colorMapDesc.Filter = D3D11_FILTER_MIN_MAG_MIP_LINEAR; // colorMapDesc.Filter = D3D11_FILTER_ANISOTROPIC; // colorMapDesc.MaxAnisotropy = 4; colorMapDesc.MaxLOD = D3D11_FLOAT32_MAX; HR( theDevice->CreateSamplerState( &colorMapDesc, &m_pTextureSampler ) ); m_pFXWorld = m_effect->GetVariableByName( "gWorld" )->AsMatrix(); m_pFXTexture = m_effect->GetVariableByName( "gTexture" )->AsShaderResource(); m_pFXTextureSampler = m_effect->GetVariableByName( "gTextureSampler" )->AsSampler(); return 0; }
DiWaterChunk::DiWaterChunk( uint16 x, uint16 y, DiWaterMap* parent ) :mParent(parent), mChunkID(x,y), mVertexBuffer(NULL), mHeight(10) { mPrimitiveType = PT_TRIANGLELIST; mPrimitiveCount = 2; mVerticesNum = 4; mMaterial = parent->mWaterMaterial; BuildBuffers(); }
void DiWaterChunk::SetHeight( float val ) { if (!DiMath::RealEqual(mHeight,val)) { mHeight = val; DiTerrainDescPtr tr = mParent->mTerrainMap->GetDesc(); uint32 id = mChunkID.x * tr->mSizeX + mChunkID.y; tr->mWaterHeightMap[id] = val; BuildBuffers(); } }
gs_vertex_buffer::gs_vertex_buffer(gs_device_t *device, struct gs_vb_data *data, uint32_t flags) : gs_obj (device, gs_type::gs_vertex_buffer), dynamic ((flags & GS_DYNAMIC) != 0), vbd (data), numVerts (data->num) { if (!data->num) throw "Cannot initialize vertex buffer with 0 vertices"; if (!data->points) throw "No points specified for vertex buffer"; BuildBuffers(); }
DXBox::DXBox(ID3D11Device* md3dDevice, LPCWSTR texturePath) { XMMATRIX I = XMMatrixIdentity(); XMStoreFloat4x4(&mBoxWorld, I); XMStoreFloat4x4(&mTexTransform, I); SetScale(Vector3(1,1,1)); SetPosition(Vector3(0,0,0)); SetRotation(Vector3(0,0,0)); mBoxMat.Ambient = XMFLOAT4(0.5f, 0.5f, 0.5f, 1.0f); mBoxMat.Diffuse = XMFLOAT4(1.0f, 1.0f, 1.0f, 1.0f); mBoxMat.Specular = XMFLOAT4(0.6f, 0.6f, 0.6f, 16.0f); HR(D3DX11CreateShaderResourceViewFromFile(md3dDevice, texturePath, 0, 0, &boxDiffuseTexture, 0 )); BuildBuffers(md3dDevice); }
bool ParticleManager::LoadParticles(DxGraphics* pDxGraphics) { if (!BuildVertexList()) { return false; } if (!BuildBuffers(pDxGraphics->GetDevice())) { return false; } if (!BuildShaders(pDxGraphics->GetDevice())) { return false; } if (!BuildInputLayout(pDxGraphics->GetDevice())) { return false; } return true; }
void CubeMesh::Load() { BuildBuffers(); Logger("[CubeMesh] Load done"); }