use per-prim minmax

This commit is contained in:
David Rose 2005-03-18 01:37:29 +00:00
parent 6a4b827ea7
commit c92e7e92d4

View File

@ -2699,23 +2699,23 @@ draw_tristrips(const qpGeomTristrips *primitive) {
int max_vertex = primitive->get_max_vertex(); int max_vertex = primitive->get_max_vertex();
CPTA_ushort vertices = primitive->get_flat_first_vertices(); CPTA_ushort vertices = primitive->get_flat_first_vertices();
CPTA_int ends = primitive->get_ends(); CPTA_int ends = primitive->get_ends();
CPTA_ushort mins = primitive->get_mins();
CPTA_ushort maxs = primitive->get_maxs();
nassertv(mins.size() == ends.size() && maxs.size() == ends.size());
CPTA_uchar array_data = _vertex_data->get_array_data(0); CPTA_uchar array_data = _vertex_data->get_array_data(0);
int stride = _vertex_data->get_format()->get_array(0)->get_stride(); int stride = _vertex_data->get_format()->get_array(0)->get_stride();
int num_primitives = primitive->get_num_primitives(); unsigned int start = 0;
int start = 0; for (size_t i = 0; i < ends.size(); i++) {
for (CPTA_int::const_iterator pi = ends.begin(); pi != ends.end(); ++pi) {
int end = (*pi);
_pD3DDevice->DrawIndexedPrimitiveUP _pD3DDevice->DrawIndexedPrimitiveUP
(D3DPT_TRIANGLESTRIP, (D3DPT_TRIANGLESTRIP,
min_vertex, max_vertex - min_vertex + 1, mins[i], maxs[i] - mins[i] + 1,
end - start - 2, ends[i] - start - 2,
vertices + start, D3DFMT_INDEX16, vertices + start, D3DFMT_INDEX16,
array_data, stride); array_data, stride);
start = end; start = ends[i];
} }
} }