Merge remote-tracking branch 'origin/release/1.9.x'

This commit is contained in:
rdb 2015-11-07 23:57:11 +01:00
commit 026ec613f5
2 changed files with 20 additions and 17 deletions

View File

@ -2996,7 +2996,6 @@ close_gsg() {
display_cat.debug() display_cat.debug()
<< this << " close_gsg " << get_type() << "\n"; << this << " close_gsg " << get_type() << "\n";
} }
free_pointers();
// As tempting as it may be to try to release all the textures and // As tempting as it may be to try to release all the textures and
// geoms now, we can't, because we might not be the currently-active // geoms now, we can't, because we might not be the currently-active
@ -3021,6 +3020,8 @@ close_gsg() {
#ifdef DO_PSTATS #ifdef DO_PSTATS
_pending_timer_queries.clear(); _pending_timer_queries.clear();
#endif #endif
free_pointers();
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////

View File

@ -1817,12 +1817,13 @@ do_define_geom_data(CData *cdata) {
if (!is_linear()) { if (!is_linear()) {
num_segments = lens_geom_segments; num_segments = lens_geom_segments;
} }
if (cdata->_geom_data == (GeomVertexData *)NULL) { if (cdata->_geom_data == (GeomVertexData *)NULL) {
cdata->_geom_data = new GeomVertexData cdata->_geom_data = new GeomVertexData
("lens", GeomVertexFormat::get_v3(), ("lens", GeomVertexFormat::get_v3(),
Geom::UH_dynamic); Geom::UH_dynamic);
} }
cdata->_geom_data->unclean_set_num_rows(num_segments * 8 + 2);
GeomVertexWriter vertex(cdata->_geom_data, InternalName::get_vertex()); GeomVertexWriter vertex(cdata->_geom_data, InternalName::get_vertex());
LPoint3 near_point, far_point; LPoint3 near_point, far_point;
@ -1835,8 +1836,8 @@ do_define_geom_data(CData *cdata) {
// Hey, this point is off the lens! Can't do a frustum. // Hey, this point is off the lens! Can't do a frustum.
return 0; return 0;
} }
vertex.add_data3(near_point); vertex.set_data3(near_point);
vertex.add_data3(far_point); vertex.set_data3(far_point);
// Upper right, right edge. // Upper right, right edge.
LPoint3 p2(1.0f, 1.0f - t, 0.0f); LPoint3 p2(1.0f, 1.0f - t, 0.0f);
@ -1844,8 +1845,8 @@ do_define_geom_data(CData *cdata) {
// Hey, this point is off the lens! Can't do a frustum. // Hey, this point is off the lens! Can't do a frustum.
return 0; return 0;
} }
vertex.add_data3(near_point); vertex.set_data3(near_point);
vertex.add_data3(far_point); vertex.set_data3(far_point);
// Lower right, bottom edge. // Lower right, bottom edge.
LPoint3 p3(1.0f - t, -1.0f, 0.0f); LPoint3 p3(1.0f - t, -1.0f, 0.0f);
@ -1853,8 +1854,8 @@ do_define_geom_data(CData *cdata) {
// Hey, this point is off the lens! Can't do a frustum. // Hey, this point is off the lens! Can't do a frustum.
return 0; return 0;
} }
vertex.add_data3(near_point); vertex.set_data3(near_point);
vertex.add_data3(far_point); vertex.set_data3(far_point);
// Lower left, left edge. // Lower left, left edge.
LPoint3 p4(-1.0f, -1.0f + t, 0.0f); LPoint3 p4(-1.0f, -1.0f + t, 0.0f);
@ -1862,19 +1863,20 @@ do_define_geom_data(CData *cdata) {
// Hey, this point is off the lens! Can't do a frustum. // Hey, this point is off the lens! Can't do a frustum.
return 0; return 0;
} }
vertex.add_data3(near_point); vertex.set_data3(near_point);
vertex.add_data3(far_point); vertex.set_data3(far_point);
} }
// Finally, add one more pair for the viewing axis (or more
// specifically, the center of the lens). // Finally, add one more pair for the viewing axis (or more specifically, the
LPoint3 pc(-cdata->_film_offset[0], -cdata->_film_offset[1], 0.0f); // center of the lens).
LPoint3 pc(0);
if (!do_extrude(cdata, pc, near_point, far_point)) { if (!do_extrude(cdata, pc, near_point, far_point)) {
vertex.add_data3(0.0f, 0.0f, 0.0f); vertex.set_data3(0.0f, 0.0f, 0.0f);
vertex.add_data3(0.0f, 0.0f, 0.0f); vertex.set_data3(0.0f, 0.0f, 0.0f);
} else { } else {
vertex.add_data3(near_point); vertex.set_data3(near_point);
vertex.add_data3(far_point); vertex.set_data3(far_point);
} }
return num_segments; return num_segments;