mirror of
https://github.com/ioquake/ioq3.git
synced 2024-11-10 07:11:46 +00:00
OpenGL2: Fix missing bounds calculation when loading BSP surfaces.
This commit is contained in:
parent
dfbaf50324
commit
f9e5712311
1 changed files with 7 additions and 4 deletions
|
@ -667,7 +667,7 @@ static shader_t *ShaderForShaderNum( int shaderNum, int lightmapNum ) {
|
||||||
return shader;
|
return shader;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoadDrawVertToSrfVert(srfVert_t *s, drawVert_t *d, int realLightmapNum, float hdrVertColors[3])
|
void LoadDrawVertToSrfVert(srfVert_t *s, drawVert_t *d, int realLightmapNum, float hdrVertColors[3], vec3_t *bounds)
|
||||||
{
|
{
|
||||||
vec4_t v;
|
vec4_t v;
|
||||||
|
|
||||||
|
@ -675,6 +675,9 @@ void LoadDrawVertToSrfVert(srfVert_t *s, drawVert_t *d, int realLightmapNum, flo
|
||||||
s->xyz[1] = LittleFloat(d->xyz[1]);
|
s->xyz[1] = LittleFloat(d->xyz[1]);
|
||||||
s->xyz[2] = LittleFloat(d->xyz[2]);
|
s->xyz[2] = LittleFloat(d->xyz[2]);
|
||||||
|
|
||||||
|
if (bounds)
|
||||||
|
AddPointToBounds(s->xyz, bounds[0], bounds[1]);
|
||||||
|
|
||||||
s->st[0] = LittleFloat(d->st[0]);
|
s->st[0] = LittleFloat(d->st[0]);
|
||||||
s->st[1] = LittleFloat(d->st[1]);
|
s->st[1] = LittleFloat(d->st[1]);
|
||||||
|
|
||||||
|
@ -771,7 +774,7 @@ static void ParseFace( dsurface_t *ds, drawVert_t *verts, float *hdrVertColors,
|
||||||
ClearBounds(surf->cullinfo.bounds[0], surf->cullinfo.bounds[1]);
|
ClearBounds(surf->cullinfo.bounds[0], surf->cullinfo.bounds[1]);
|
||||||
verts += LittleLong(ds->firstVert);
|
verts += LittleLong(ds->firstVert);
|
||||||
for(i = 0; i < numVerts; i++)
|
for(i = 0; i < numVerts; i++)
|
||||||
LoadDrawVertToSrfVert(&cv->verts[i], &verts[i], realLightmapNum, hdrVertColors ? hdrVertColors + (ds->firstVert + i) * 3 : NULL);
|
LoadDrawVertToSrfVert(&cv->verts[i], &verts[i], realLightmapNum, hdrVertColors ? hdrVertColors + (ds->firstVert + i) * 3 : NULL, surf->cullinfo.bounds);
|
||||||
|
|
||||||
// copy triangles
|
// copy triangles
|
||||||
badTriangles = 0;
|
badTriangles = 0;
|
||||||
|
@ -872,7 +875,7 @@ static void ParseMesh ( dsurface_t *ds, drawVert_t *verts, float *hdrVertColors,
|
||||||
verts += LittleLong( ds->firstVert );
|
verts += LittleLong( ds->firstVert );
|
||||||
numPoints = width * height;
|
numPoints = width * height;
|
||||||
for(i = 0; i < numPoints; i++)
|
for(i = 0; i < numPoints; i++)
|
||||||
LoadDrawVertToSrfVert(&points[i], &verts[i], realLightmapNum, hdrVertColors ? hdrVertColors + (ds->firstVert + i) * 3 : NULL);
|
LoadDrawVertToSrfVert(&points[i], &verts[i], realLightmapNum, hdrVertColors ? hdrVertColors + (ds->firstVert + i) * 3 : NULL, NULL);
|
||||||
|
|
||||||
// pre-tesseleate
|
// pre-tesseleate
|
||||||
R_SubdividePatchToGrid( grid, width, height, points );
|
R_SubdividePatchToGrid( grid, width, height, points );
|
||||||
|
@ -936,7 +939,7 @@ static void ParseTriSurf( dsurface_t *ds, drawVert_t *verts, float *hdrVertColor
|
||||||
ClearBounds(surf->cullinfo.bounds[0], surf->cullinfo.bounds[1]);
|
ClearBounds(surf->cullinfo.bounds[0], surf->cullinfo.bounds[1]);
|
||||||
verts += LittleLong(ds->firstVert);
|
verts += LittleLong(ds->firstVert);
|
||||||
for(i = 0; i < numVerts; i++)
|
for(i = 0; i < numVerts; i++)
|
||||||
LoadDrawVertToSrfVert(&cv->verts[i], &verts[i], -1, hdrVertColors ? hdrVertColors + (ds->firstVert + i) * 3 : NULL);
|
LoadDrawVertToSrfVert(&cv->verts[i], &verts[i], -1, hdrVertColors ? hdrVertColors + (ds->firstVert + i) * 3 : NULL, surf->cullinfo.bounds);
|
||||||
|
|
||||||
// copy triangles
|
// copy triangles
|
||||||
badTriangles = 0;
|
badTriangles = 0;
|
||||||
|
|
Loading…
Reference in a new issue