|
|
发表于 2005-9-5 14:21:00
|
显示全部楼层
Re:宣三国英雄传提高速度的办法
void CResource::ReadBmpToSurface(const char *Filename,CDXSurface *in, BYTE memoryType)
{
char *buffer;
int i;
for(i = 0; i < m_nFiles; i++)
{
if(strnicmp(Filename, m_pFE.name, 13) == 0) break;
}
long offset = m_pFE.offset;
lseek(m_Infile, offset, SEEK_SET);
int size = m_pFE[i+1].offset - offset;
// Get space for the buffer
buffer = new char[size];
if(buffer == NULL) return;
read(m_Infile, buffer, size);
in->Create(g_Screen,size,buffer,memoryType);
delete[] buffer;
}
void CResource::ReadGrpToSurface(const char *Filename, WORD Index, CDXSurface *in, BYTE memoryType)
{
char *buffer;
if(strnicmp(Filename, GrpFileName, 13) != 0)
{
int i;
for(i = 0; i < m_nFiles; i++)
{
if(strnicmp(Filename, m_pFE.name, 13) == 0) break;
}
long offset = m_pFE.offset;
lseek(m_Infile, offset, SEEK_SET);
int size = m_pFE[i+1].offset - offset;
// Get space for the buffer
buffer = new char[size];
if(buffer == NULL) return;
read(m_Infile, buffer, size);
Grp.Close();
Grp.OpenBuff((BYTE*)buffer, size);
memcpy(GrpFileName, Filename, 13);
}
DWORD Size = 0;
buffer = NULL;
Grp.GetBmp(Index, (BYTE*&)buffer, Size);
in->Create(g_Screen, Size, buffer, memoryType);
delete[] buffer;
}
GRP是我自己定的格式.笨笨的方法 |
|