本文整理汇总了C++中Hunk_Alloc函数的典型用法代码示例。如果您正苦于以下问题:C++ Hunk_Alloc函数的具体用法?C++ Hunk_Alloc怎么用?C++ Hunk_Alloc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Hunk_Alloc函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Mod_LoadVertexes
/*
=================
Mod_LoadVertexes
=================
*/
void Mod_LoadVertexes (lump_t *l)
{
dvertex_t *in;
mvertex_t *out;
int i, count;
in = (void *)(mod_base + l->fileofs);
if (l->filelen % sizeof(*in))
VID_Printf (ERR_DROP, "MOD_LoadBmodel: funny lump size in %s",loadmodel->name);
count = l->filelen / sizeof(*in);
out = Hunk_Alloc ( count*sizeof(*out));
loadmodel->vertexes = out;
loadmodel->numvertexes = count;
for ( i=0 ; i<count ; i++, in++, out++)
{
out->position[0] = LittleFloat (in->point[0]);
out->position[1] = LittleFloat (in->point[1]);
out->position[2] = LittleFloat (in->point[2]);
}
}
示例2: Mod_LoadVisibility
void
Mod_LoadVisibility(lump_t *l)
{
int i;
if (!l->filelen)
{
loadmodel->vis = NULL;
return;
}
loadmodel->vis = Hunk_Alloc(l->filelen);
memcpy(loadmodel->vis, mod_base + l->fileofs, l->filelen);
loadmodel->vis->numclusters = LittleLong(loadmodel->vis->numclusters);
for (i = 0; i < loadmodel->vis->numclusters; i++)
{
loadmodel->vis->bitofs[i][0] = LittleLong(loadmodel->vis->bitofs[i][0]);
loadmodel->vis->bitofs[i][1] = LittleLong(loadmodel->vis->bitofs[i][1]);
}
}
示例3: LoadSP2
void
LoadSP2 ( model_t *mod, void *buffer )
{
dsprite_t *sprin, *sprout;
int i;
sprin = (dsprite_t *) buffer;
sprout = Hunk_Alloc( modfilelen );
sprout->ident = LittleLong( sprin->ident );
sprout->version = LittleLong( sprin->version );
sprout->numframes = LittleLong( sprin->numframes );
if ( sprout->version != SPRITE_VERSION )
{
ri.Sys_Error( ERR_DROP, "%s has wrong version number (%i should be %i)",
mod->name, sprout->version, SPRITE_VERSION );
}
if ( sprout->numframes > MAX_MD2SKINS )
{
ri.Sys_Error( ERR_DROP, "%s has too many frames (%i > %i)",
mod->name, sprout->numframes, MAX_MD2SKINS );
}
/* byte swap everything */
for ( i = 0; i < sprout->numframes; i++ )
{
sprout->frames [ i ].width = LittleLong( sprin->frames [ i ].width );
sprout->frames [ i ].height = LittleLong( sprin->frames [ i ].height );
sprout->frames [ i ].origin_x = LittleLong( sprin->frames [ i ].origin_x );
sprout->frames [ i ].origin_y = LittleLong( sprin->frames [ i ].origin_y );
memcpy( sprout->frames [ i ].name, sprin->frames [ i ].name, MAX_SKINNAME );
mod->skins [ i ] = R_FindImage( sprout->frames [ i ].name,
it_sprite );
}
mod->type = mod_sprite;
}
示例4: Mod_LoadSurfedges
/*
=================
Mod_LoadSurfedges
=================
*/
void Mod_LoadSurfedges (lump_t *l, FILE *file, long base)
{
int i, count;
int *out;
Com_DPrintf("%s\n", __FUNCTION__);
fseek(file, base + l->fileofs, SEEK_SET);
if (l->filelen % sizeof(int))
ri.Sys_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size in %s",loadmodel->name);
count = l->filelen / sizeof(int);
out = Hunk_Alloc (&hunk_ref, l->filelen);
loadmodel->surfedges = out;
loadmodel->numsurfedges = count;
ri.FS_Read(out, l->filelen, file);
Com_DPrintf("%s OK\n", __FUNCTION__);
}
示例5: Mod_LoadSubmodels
/*
=================
Mod_LoadSubmodels
=================
*/
void Mod_LoadSubmodels (lump_t *l, FILE *file, long base)
{
dmodel_t in[MAX_MAP_MODELS];
mmodel_t *out;
int i, j, count;
Com_DPrintf("%s\n", __FUNCTION__);
fseek(file, base + l->fileofs, SEEK_SET);
if (l->filelen % sizeof(dmodel_t))
ri.Sys_Error (ERR_DROP, "Mod_LoadSubmodels: funny lump size in %s",loadmodel->name);
count = l->filelen / sizeof(dmodel_t);
if (count > MAX_MAP_MODELS)
ri.Sys_Error(ERR_DROP, "%s: Too many (%d) in %s", __FUNCTION__, count, loadmodel->name);
out = Hunk_Alloc (&hunk_ref, count*sizeof(*out));
loadmodel->submodels = out;
loadmodel->numsubmodels = count;
ri.FS_Read(in, l->filelen, file);
for ( i=0 ; i<count ; i++, out++)
{
for (j=0 ; j<3 ; j++)
{ // spread the mins / maxs by a pixel
out->mins[j] = LittleFloat (in[i].mins[j]) - 1;
out->maxs[j] = LittleFloat (in[i].maxs[j]) + 1;
out->origin[j] = LittleFloat (in[i].origin[j]);
}
out->radius = RadiusFromBounds (out->mins, out->maxs);
out->headnode = LittleLong (in[i].headnode);
out->firstface = LittleLong (in[i].firstface);
out->numfaces = LittleLong (in[i].numfaces);
}
Com_DPrintf("%s OK\n", __FUNCTION__);
}
示例6: Mod_LoadSurfedges
/*
=================
Mod_LoadSurfedges
=================
*/
void Mod_LoadSurfedges (lump_t *l, FILE *file, long base)
{
int i, count;
int in, *out;
fseek(file, base + l->fileofs, SEEK_SET);
if (l->filelen % sizeof(in))
ri.Sys_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size in %s",loadmodel->name);
count = l->filelen / sizeof(in);
out = Hunk_Alloc (&hunk_ref, count*sizeof(*out));
loadmodel->surfedges = out;
loadmodel->numsurfedges = count;
for ( i=0 ; i<count ; i++)
{
ri.FS_Read(&in, sizeof(in), file);
out[i] = LittleLong (in);
}
}
示例7: Mod_LoadLighting
/*
=================
Mod_LoadLighting
Converts the 24 bit lighting down to 8 bit
by taking the brightest component
=================
*/
void Mod_LoadLighting (lump_t *l)
{
int i, size;
byte *in;
if (!l->filelen)
{
loadmodel->lightdata = NULL;
return;
}
size = l->filelen/3;
loadmodel->lightdata = Hunk_Alloc (size);
in = (void *)(mod_base + l->fileofs);
for (i=0 ; i<size ; i++, in+=3)
{
if (in[0] > in[1] && in[0] > in[2])
loadmodel->lightdata[i] = in[0];
else if (in[1] > in[0] && in[1] > in[2])
loadmodel->lightdata[i] = in[1];
else
loadmodel->lightdata[i] = in[2];
}
}
示例8: Mod_LoadMarksurfaces
/*
=================
Mod_LoadMarksurfaces
=================
*/
void Mod_LoadMarksurfaces (lump_t *l)
{
int i, j, count;
short *in;
msurface_t **out;
in = (void *)(mod_base + l->fileofs);
if (l->filelen % sizeof(*in))
ri.Sys_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size in %s",loadmodel->name);
count = l->filelen / sizeof(*in);
out = Hunk_Alloc ( count*sizeof(*out));
loadmodel->marksurfaces = out;
loadmodel->nummarksurfaces = count;
for ( i=0 ; i<count ; i++)
{
j = LittleShort(in[i]);
if (j < 0 || j >= loadmodel->numsurfaces)
ri.Sys_Error (ERR_DROP, "Mod_ParseMarksurfaces: bad surface number");
out[i] = loadmodel->surfaces + j;
}
}
示例9: Mod_LoadSubmodels
void
Mod_LoadSubmodels(lump_t *l)
{
dmodel_t *in;
mmodel_t *out;
int i, j, count;
in = (void *)(mod_base + l->fileofs);
if (l->filelen % sizeof(*in))
{
ri.Sys_Error(ERR_DROP, "MOD_LoadBmodel: funny lump size in %s",
loadmodel->name);
}
count = l->filelen / sizeof(*in);
out = Hunk_Alloc(count * sizeof(*out));
loadmodel->submodels = out;
loadmodel->numsubmodels = count;
for (i = 0; i < count; i++, in++, out++)
{
for (j = 0; j < 3; j++)
{
/* spread the mins / maxs by a pixel */
out->mins[j] = LittleFloat(in->mins[j]) - 1;
out->maxs[j] = LittleFloat(in->maxs[j]) + 1;
out->origin[j] = LittleFloat(in->origin[j]);
}
out->radius = Mod_RadiusFromBounds(out->mins, out->maxs);
out->headnode = LittleLong(in->headnode);
out->firstface = LittleLong(in->firstface);
out->numfaces = LittleLong(in->numfaces);
}
}
示例10: Mod_LoadEdges
/*
=================
Mod_LoadEdges
=================
*/
void Mod_LoadEdges (lump_t *l, FILE *file, long base)
{
dedge_t in;
medge_t *out;
int i, count;
fseek(file, base + l->fileofs, SEEK_SET);
if (l->filelen % sizeof(in))
ri.Sys_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size in %s",loadmodel->name);
count = l->filelen / sizeof(in);
out = Hunk_Alloc (&hunk_ref, (count + 1) * sizeof(*out));
loadmodel->edges = out;
loadmodel->numedges = count;
for ( i=0 ; i<count ; i++, out++)
{
ri.FS_Read(&in, sizeof(in), file);
out->v[0] = (unsigned short)LittleShort(in.v[0]);
out->v[1] = (unsigned short)LittleShort(in.v[1]);
}
}
示例11: Mod_LoadSpriteModel
/*
=================
Mod_LoadSpriteModel
=================
*/
void Mod_LoadSpriteModel (model_t *mod, FILE *file, long base)
{
dsprite_t *sprout;
int i;
sprout = Hunk_Alloc (&hunk_ref, modfilelen);
ri.FS_Read(sprout, modfilelen, file);
mod->sprite = sprout;
sprout->ident = LittleLong (sprout->ident);
sprout->version = LittleLong (sprout->version);
sprout->numframes = LittleLong (sprout->numframes);
if (sprout->version != SPRITE_VERSION)
ri.Sys_Error (ERR_DROP, "%s has wrong version number (%i should be %i)",
mod->name, sprout->version, SPRITE_VERSION);
if (sprout->numframes > MAX_MD2SKINS)
ri.Sys_Error (ERR_DROP, "%s has too many frames (%i > %i)",
mod->name, sprout->numframes, MAX_MD2SKINS);
// byte swap everything and load the images.
for (i=0 ; i<sprout->numframes ; i++)
{
sprout->frames[i].width = LittleLong (sprout->frames[i].width);
sprout->frames[i].height = LittleLong (sprout->frames[i].height);
sprout->frames[i].origin_x = LittleLong (sprout->frames[i].origin_x);
sprout->frames[i].origin_y = LittleLong (sprout->frames[i].origin_y);
mod->skins[i] = GL_FindImage (sprout->frames[i].name,
it_sprite);
}
mod->type = mod_sprite;
}
示例12: Cmd_AddCommand
/*
============
Cmd_AddCommand
============
*/
void Cmd_AddCommand (char *cmd_name, xcommand_t function)
{
cmd_function_t *cmd;
int key;
if (host_initialized) // because hunk allocation would get stomped
assert(!"Cmd_AddCommand after host_initialized");
#if 0
// fail if the command is a variable name
if (Cvar_FindVar(cmd_name)) {
Com_Printf ("Cmd_AddCommand: %s already defined as a var\n", cmd_name);
return;
}
#endif
key = Com_HashKey (cmd_name);
// fail if the command already exists
for (cmd=cmd_hash_array[key] ; cmd ; cmd=cmd->hash_next)
{
if (!Q_stricmp (cmd_name, cmd->name))
{
Com_Printf ("Cmd_AddCommand: %s already defined\n", cmd_name);
return;
}
}
cmd = Hunk_Alloc (sizeof(cmd_function_t));
cmd->name = cmd_name;
cmd->function = function;
cmd->next = cmd_functions;
cmd_functions = cmd;
cmd->hash_next = cmd_hash_array[key];
cmd_hash_array[key] = cmd;
}
示例13: GL_MakeAliasModelDisplayLists_VBO
/*
================
GL_MakeAliasModelDisplayLists_VBO
Saves data needed to build the VBO for this model on the hunk. Afterwards this
is copied to Mod_Extradata.
Original code by MH from RMQEngine
================
*/
void GL_MakeAliasModelDisplayLists_VBO (void)
{
int i, j;
int maxverts_vbo;
trivertx_t *verts;
unsigned short *indexes;
aliasmesh_t *desc;
// first, copy the verts onto the hunk
verts = (trivertx_t *) Hunk_Alloc (paliashdr->numposes * paliashdr->numverts * sizeof(trivertx_t));
paliashdr->vertexes = (byte *)verts - (byte *)paliashdr;
for (i=0 ; i<paliashdr->numposes ; i++)
for (j=0 ; j<paliashdr->numverts ; j++)
verts[i*paliashdr->numverts + j] = poseverts[i][j];
// there can never be more than this number of verts and we just put them all on the hunk
maxverts_vbo = pheader->numtris * 3;
desc = (aliasmesh_t *) Hunk_Alloc (sizeof (aliasmesh_t) * maxverts_vbo);
// there will always be this number of indexes
indexes = (unsigned short *) Hunk_Alloc (sizeof (unsigned short) * maxverts_vbo);
pheader->indexes = (intptr_t) indexes - (intptr_t) pheader;
pheader->meshdesc = (intptr_t) desc - (intptr_t) pheader;
pheader->numindexes = 0;
pheader->numverts_vbo = 0;
for (i = 0; i < pheader->numtris; i++)
{
for (j = 0; j < 3; j++)
{
int v;
// index into hdr->vertexes
unsigned short vertindex = triangles[i].vertindex[j];
// basic s/t coords
int s = stverts[vertindex].s;
int t = stverts[vertindex].t;
// check for back side and adjust texcoord s
if (!triangles[i].facesfront && stverts[vertindex].onseam) s += pheader->skinwidth / 2;
// see does this vert already exist
for (v = 0; v < pheader->numverts_vbo; v++)
{
// it could use the same xyz but have different s and t
if (desc[v].vertindex == vertindex && (int) desc[v].st[0] == s && (int) desc[v].st[1] == t)
{
// exists; emit an index for it
indexes[pheader->numindexes++] = v;
// no need to check any more
break;
}
}
if (v == pheader->numverts_vbo)
{
// doesn't exist; emit a new vert and index
indexes[pheader->numindexes++] = pheader->numverts_vbo;
desc[pheader->numverts_vbo].vertindex = vertindex;
desc[pheader->numverts_vbo].st[0] = s;
desc[pheader->numverts_vbo++].st[1] = t;
}
}
}
// upload immediately
GLMesh_LoadVertexBuffer (aliasmodel, pheader);
}
示例14: R_Init
void R_Init( void ) {
int i;
byte *ptr;
// Com_Printf ("----- R_Init -----\n" );
// clear all our internal state
Com_Memset( &tr, 0, sizeof( tr ) );
Com_Memset( &backEnd, 0, sizeof( backEnd ) );
#ifndef DEDICATED
Com_Memset( &tess, 0, sizeof( tess ) );
#endif
// Swap_Init();
#ifndef DEDICATED
#ifndef FINAL_BUILD
if ( (int)tess.xyz & 15 ) {
Com_Printf( "WARNING: tess.xyz not 16 byte aligned (%x)\n",(int)tess.xyz & 15 );
}
#endif
#endif
//
// init function tables
//
for ( i = 0; i < FUNCTABLE_SIZE; i++ )
{
tr.sinTable[i] = sin( DEG2RAD( i * 360.0f / ( ( float ) ( FUNCTABLE_SIZE - 1 ) ) ) );
tr.squareTable[i] = ( i < FUNCTABLE_SIZE/2 ) ? 1.0f : -1.0f;
tr.sawToothTable[i] = (float)i / FUNCTABLE_SIZE;
tr.inverseSawToothTable[i] = 1.0f - tr.sawToothTable[i];
if ( i < FUNCTABLE_SIZE / 2 )
{
if ( i < FUNCTABLE_SIZE / 4 )
{
tr.triangleTable[i] = ( float ) i / ( FUNCTABLE_SIZE / 4 );
}
else
{
tr.triangleTable[i] = 1.0f - tr.triangleTable[i-FUNCTABLE_SIZE / 4];
}
}
else
{
tr.triangleTable[i] = -tr.triangleTable[i-FUNCTABLE_SIZE/2];
}
}
#ifndef DEDICATED
R_InitFogTable();
R_NoiseInit();
#endif
R_Register();
max_polys = r_maxpolys->integer;
if (max_polys < MAX_POLYS)
max_polys = MAX_POLYS;
max_polyverts = r_maxpolyverts->integer;
if (max_polyverts < MAX_POLYVERTS)
max_polyverts = MAX_POLYVERTS;
ptr = (byte *)Hunk_Alloc( sizeof( *backEndData ) + sizeof(srfPoly_t) * max_polys + sizeof(polyVert_t) * max_polyverts, h_low);
backEndData = (backEndData_t *) ptr;
backEndData->polys = (srfPoly_t *) ((char *) ptr + sizeof( *backEndData ));
backEndData->polyVerts = (polyVert_t *) ((char *) ptr + sizeof( *backEndData ) + sizeof(srfPoly_t) * max_polys);
#ifndef DEDICATED
R_ToggleSmpFrame();
for(i = 0; i < MAX_LIGHT_STYLES; i++)
{
RE_SetLightStyle(i, -1);
}
InitOpenGL();
R_InitImages();
R_InitShaders(qfalse);
R_InitSkins();
R_TerrainInit(); //rwwRMG - added
R_InitFonts();
#endif
R_ModelInit();
G2VertSpaceServer = &CMiniHeap_singleton;
#ifndef DEDICATED
R_InitDecals ( );
R_InitWorldEffects();
int err = qglGetError();
if ( err != GL_NO_ERROR )
Com_Printf ( "glGetError() = 0x%x\n", err);
#endif
// Com_Printf ("----- finished R_Init -----\n" );
}
示例15: SV_SpawnServer
/*
================
SV_SpawnServer
Change the server to a new map, taking all connected
clients along with it.
This is NOT called for map_restart
================
*/
void SV_SpawnServer( char *server, qboolean killBots )
{
int i;
int checksum;
qboolean isBot;
const char *p;
// shut down the existing game if it is running
SV_ShutdownGameProgs();
Com_Printf( "------ Server Initialization ------\n" );
Com_Printf( "Server: %s\n", server );
// if not running a dedicated server CL_MapLoading will connect the client to the server
// also print some status stuff
CL_MapLoading();
// make sure all the client stuff is unloaded
CL_ShutdownAll();
// clear the whole hunk because we're (re)loading the server
Hunk_Clear();
// clear collision map data // (SA) NOTE: TODO: used in missionpack
CM_ClearMap();
// wipe the entire per-level structure
SV_ClearServer();
// MrE: main zone should be pretty much emtpy at this point
// except for file system data and cached renderer data
Z_LogHeap();
// allocate empty config strings
for ( i = 0; i < MAX_CONFIGSTRINGS; i++ )
{
sv.configstrings[ i ] = CopyString( "" );
sv.configstringsmodified[ i ] = qfalse;
}
// init client structures and svs.numSnapshotEntities
if ( !Cvar_VariableValue( "sv_running" ) )
{
SV_Startup();
}
else
{
// check for maxclients change
if ( sv_maxclients->modified )
{
SV_ChangeMaxClients();
}
#ifdef USE_HUB_SERVER
// if sv_owHubHost was changed, resolve the address again
if ( sv_owHubHost->modified )
{
sv_owHubHost->modified = qfalse;
SV_ResolveowHubHost();
}
#endif
}
// clear pak references
FS_ClearPakReferences( 0 );
// allocate the snapshot entities on the hunk
svs.snapshotEntities = Hunk_Alloc( sizeof( entityState_t ) * svs.numSnapshotEntities, h_high );
svs.nextSnapshotEntities = 0;
// toggle the server bit so clients can detect that a
// server has changed
svs.snapFlagServerBit ^= SNAPFLAG_SERVERCOUNT;
// set nextmap to the same map, but it may be overriden
// by the game startup or another console command
Cvar_Set( "nextmap", "map_restart 0" );
// Cvar_Set( "nextmap", va("map %s", server) );
// Ridah
// DHM - Nerve :: We want to use the completion bar in multiplayer as well
// Arnout: just always use it
// if( !SV_GameIsSinglePlayer() ) {
SV_SetExpectedHunkUsage( va( "maps/%s.bsp", server ) );
// } else {
// just set it to a negative number,so the cgame knows not to draw the percent bar
// Cvar_Set( "com_expectedhunkusage", "-1" );
// }
//.........这里部分代码省略.........