//コンストラクタ MapClass::MapClass(int typeMap,int* errorFlag) : MapType(typeMap) { ZeroObject( &Map ); ZeroObject( &Wall ); ZeroObject( &End ); SetupSitus( &Map, kMDL_G_MAP01 ); SetupSitus( &Wall, kMDL_W_WALL01 ); SetupSitus( &End, kMDL_E_END); g_ObjModels[Map.objType] = new ModelClass(kCourseIndex[MapType][0],errorFlag); g_ObjModels[Wall.objType] = new ModelClass(kCourseIndex[MapType][1],errorFlag); g_ObjModels[End.objType] = new ModelClass(kCourseIndex[MapType][2],errorFlag); }
void ff::ClearTempSubDirectory() { #if !METRO_APP if (GetTempSubDirectory().empty()) { // don't clear the root temp path return; } #endif ff::String szFilter = ff::GetTempDirectory(); AppendPathTail(szFilter, String(L"*")); WIN32_FIND_DATA data; ZeroObject(data); HANDLE hFind = FindFirstFileEx(szFilter.c_str(), FindExInfoStandard, &data, FindExSearchNameMatch, nullptr, 0); for (BOOL bDone = FALSE; !bDone && hFind != INVALID_HANDLE_VALUE; bDone = !FindNextFile(hFind, &data)) { if (!(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { ff::String szFile = ff::GetTempDirectory(); AppendPathTail(szFile, String(data.cFileName)); DeleteFile(szFile); } } if (hFind != INVALID_HANDLE_VALUE) { FindClose(hFind); } }
D3DPointLight::~D3DPointLight() { ReleaseLightIndex( m_LightIndex ); ZeroObject( &m_D3DLight, sizeof( m_D3DLight ) ); m_IsActive = MapilFalse; m_IsUsed = MapilFalse; m_LightIndex = -1; }
// Create. MapilVoid GLTexture::Create( const MapilTChar* pFileName ) { MapilChar name[ 1024 ]; ConvertToMultiByte( pFileName, -1, name, 1024 ); // Analyze file format. FileFormatAnalyzer ffa; ffa.Open( name ); ffa.Analyze(); MapilInt32 channel = 3; if( ffa.GetFileFmt() == FILE_FORMAT_PNG ){ PNGFile pf; pf.Open( name, FILE_OPEN_READ_MODE ); pf.Load(); m_TexSize.m_X = pf.GetWidth(); m_TexSize.m_Y = pf.GetHeight(); m_pData = new GLubyte[ pf.GetDataSize() ]; ZeroObject( m_pData, sizeof( GLubyte ) * pf.GetDataSize() ); pf.Copy( m_pData ); channel = pf.GetChannel(); pf.Close(); } else if( ffa.GetFileFmt() == FILE_FORMAT_BMP ){ BMPFile bf; bf.Open( name, FILE_OPEN_READ_MODE ); bf.Load( name ); m_TexSize.m_X = bf.GetWidth(); m_TexSize.m_Y = bf.GetHeight(); m_pData = new GLubyte[ m_TexSize.m_X * m_TexSize.m_Y * 4 ]; for( MapilInt32 i = 0; i < m_TexSize.m_Y; i++ ){ for( MapilInt32 j = 0; j < m_TexSize.m_X; j++ ){ ColorRGB < MapilUChar > col = bf.GetPixelColor( j, i ); MapilInt32 offset = i * m_TexSize.m_X; m_pData[ j * 4 + offset * 4 ] = col.m_R; m_pData[ j * 4 + offset * 4 + 1 ] = col.m_G; m_pData[ j * 4 + offset * 4 + 2 ] = col.m_B; m_pData[ j * 4 + offset * 4 + 3 ] = 255; } } } glGenTextures( 1, &m_TexName ); glBindTexture( GL_TEXTURE_2D, m_TexName ); glTexImage2D( GL_TEXTURE_2D, 0, ( channel == 4 ) ? GL_RGBA :GL_RGB, m_TexSize.m_X, m_TexSize.m_Y, 0, ( channel == 4 ) ? GL_RGBA :GL_RGB, GL_UNSIGNED_BYTE, m_pData ); }
void ff::BufferCache::Reset() { for (size_t i = 0; i < _countof(_buffers); i++) { _buffers[i].Clear(); } ZeroObject(_allocated); }
ff::GraphState::GraphState() : _vertexType(ff::VERTEX_TYPE_UNKNOWN) , _topology(D3D_PRIMITIVE_TOPOLOGY_UNDEFINED) , _stride(0) , _stencil(0) , _sampleMask(0) { ZeroObject(_blendFactors); }
bool ff::BufferCache::CreateStaticBuffer(const void *pData, size_t nBytes, ID3D11Buffer **ppBuffer) { assertRetVal(ppBuffer && pData && nBytes, false); D3D11_BUFFER_DESC desc; ZeroObject(desc); desc.ByteWidth = (UINT)nBytes; desc.Usage = D3D11_USAGE_IMMUTABLE; desc.BindFlags = _binding; D3D11_SUBRESOURCE_DATA data; ZeroObject(data); data.pSysMem = pData; assertRetVal(SUCCEEDED(_device->GetDX()->CreateBuffer(&desc, &data, ppBuffer)), false); assertRetVal(*ppBuffer, false); return true; }
bool ff::BufferCache::CreateBuffer(size_t nBytes, ID3D11Buffer **ppBuffer) { assertRetVal(nBytes && ppBuffer && _device && _device->GetDX(), false); D3D11_BUFFER_DESC desc; ZeroObject(desc); desc.ByteWidth = (UINT)nBytes; desc.Usage = D3D11_USAGE_DYNAMIC; desc.BindFlags = _binding; desc.CPUAccessFlags = D3D11_CPU_ACCESS_WRITE; assertRetVal(SUCCEEDED(_device->GetDX()->CreateBuffer(&desc, nullptr, ppBuffer)), false); assertRetVal(*ppBuffer, false); return true; }
bool ff::CopyFile(StringRef pathFrom, StringRef pathTo, bool bAllowOverwrite) { String szCheckPathFrom = CanonicalizePath(pathFrom, true); String szCheckPathTo = CanonicalizePath(pathTo, true); #if METRO_APP BOOL bCancel = FALSE; COPYFILE2_EXTENDED_PARAMETERS cp; ZeroObject(cp); cp.dwSize = sizeof(cp); cp.dwCopyFlags = bAllowOverwrite ? 0 : COPY_FILE_FAIL_IF_EXISTS; cp.pfCancel = &bCancel; return SUCCEEDED(::CopyFile2(szCheckPathFrom.c_str(), szCheckPathTo.c_str(), &cp)) ? true : false; #else return ::CopyFile(szCheckPathFrom.c_str(), szCheckPathTo.c_str(), !bAllowOverwrite) ? true : false; #endif }
bool ff::GetDirectoryContents(StringRef path, Vector<String> &dirs, Vector<String> &files, Vector<FILETIME> *fileTimes) { dirs.Clear(); files.Clear(); if (fileTimes) { fileTimes->Clear(); } String szFilter = CanonicalizePath(path, true); assertRetVal(szFilter.size(), false); AppendPathTail(szFilter, String(L"*")); WIN32_FIND_DATA data; ZeroObject(data); HANDLE hFind = FindFirstFileEx(szFilter.c_str(), FindExInfoStandard, &data, FindExSearchNameMatch, nullptr, 0); for (BOOL bDone = FALSE; !bDone && hFind != INVALID_HANDLE_VALUE; bDone = !FindNextFile(hFind, &data)) { if (!(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { files.Push(String(data.cFileName)); if (fileTimes) { fileTimes->Push(data.ftLastWriteTime); } } else if (wcscmp(data.cFileName, L".") && wcscmp(data.cFileName, L"..")) { dirs.Push(String(data.cFileName)); } } if (hFind != INVALID_HANDLE_VALUE) { FindClose(hFind); } return hFind != INVALID_HANDLE_VALUE; }
ff::BufferCache::BufferCache(D3D11_BIND_FLAG binding) : _binding(binding) , _device(nullptr) { ZeroObject(_allocated); }
FrameConstants() { ZeroObject(*this); XMStoreFloat4x4(&world, XMMatrixIdentity()); XMStoreFloat4x4(&proj, XMMatrixIdentity()); }
D3DPointLight::D3DPointLight( SharedPointer < GraphicsDevice > pDev ) : PointLight( pDev ), m_IsActive( MapilFalse ), m_LightIndex( -1 ) { ZeroObject( &m_D3DLight, sizeof( m_D3DLight ) ); }