bool TerrainApp::Init() { Common::INIFile inif; inif.SetFilename(m_sConfigFilename); inif.Open(); Common::String sTemp; inif.GetINI("Window", "Title", m_sTitle); inif.GetINI("Window", "Width", sTemp); m_Width = sTemp.IntValue(); inif.GetINI("Window", "Height", sTemp); m_Height = sTemp.IntValue(); if(!InitWindow()) // Initialize the window { return false; } gLog.WriteLine("Window created OK!"); // Inititalize the D3D Render::RenderCoreDesc rcdesc; memset(&rcdesc, 0, sizeof(rcdesc)); rcdesc.m_hWnd = m_hWnd; // HWND inif.GetINI("Render", "Adapter", sTemp); rcdesc.m_Adapter = sTemp.IntValue(); // Adapter inif.GetINI("HardwareRequirements", "DeviceType", sTemp); rcdesc.m_DeviceType = Render::IntToDevType((unsigned int)sTemp.IntValue()); // D3D device type inif.GetINI("Render", "ColorBits", sTemp); rcdesc.m_DisplayColorBits = sTemp.IntValue(); // Display color bits inif.GetINI("HardwareRequirements", "UsesMixedVertexProcessing", sTemp); rcdesc.HR_UsesMixedVP = (bool)sTemp.IntValue(); inif.GetINI("HardwareRequirements", "MinimumStencilBits", sTemp); rcdesc.HR_MinStencilBits = sTemp.IntValue(); rcdesc.m_PresentParameters.BackBufferWidth = m_Width; rcdesc.m_PresentParameters.BackBufferHeight = m_Height; rcdesc.m_PresentParameters.hDeviceWindow = m_hWnd; inif.GetINI("Render", "IsFullscreen", sTemp); rcdesc.m_PresentParameters.Windowed = !((bool)sTemp.IntValue()); gLog.WriteLine("Try to initialize D3D..."); if(!g_GetRenderCore()->Init(rcdesc)) //********** ==> Initializing D3D RenderCore { gLog.WriteLine("D3D initialization failed!"); return false; } gLog.WriteLine("D3D initialized OK!"); inif.GetINI("Terrain", "Name", sTemp); g_GetTerrainTree()->SetName(sTemp); inif.SetFilename(sTemp + ".ttd"); inif.Open(); inif.GetINI("TreeInfo", "CPX", sTemp); float cpx = sTemp.FloatValue(); inif.GetINI("TreeInfo", "CPY", sTemp); float cpy = sTemp.FloatValue(); inif.GetINI("TreeInfo", "CPZ", sTemp); float cpz = sTemp.FloatValue(); g_GetTerrainTree()->CreateD3DResources(); g_GetTerrainTree()->CreateQuadTree(cpx, cpy, cpz); inif.Close(); m_Camera.Init(Maths::Vector3F(cpx, cpy + 256.f, cpz), Maths::Vector3F(cpx, cpy + 256.f, cpz + 100.f), Maths::Vector3F(0.f, 1.f, 0.f), 5.f, 30000.f, PI / 3, (float)m_Height / (float)m_Width); m_Camera.GetViewMatrix(m_mtxView); m_Camera.GetProjectionMatrix(m_mtxProj); m_pVB = g_GetRenderCore()->CreateVertexBuffer(3, sizeof(TEST_VERTEX), TEST_VERTEX_FVF); void* pVB = 0; m_pVB->Lock(0, 0, &pVB, 0); TEST_VERTEX varray[] = { 0, cpy + 256.f, 0, D3DCOLOR_XRGB(0, 255, 0), 1024, cpy + 256.f, -1024, D3DCOLOR_XRGB(0, 255, 0), -1024, cpy + 256.f, -1024, D3DCOLOR_XRGB(0, 0, 255) }; memcpy(pVB, varray, 3 * sizeof(TEST_VERTEX)); m_pVB->Unlock(); return true; }