if (HAVE_POINTS) {
LOCAL_VARS;
int dmasz = GET_SUBSEQUENT_VB_MAX_VERTS();
- int currentsz = GET_CURRENT_VB_MAX_VERTS();
+ int currentsz;
GLuint j, nr;
INIT( GL_POINTS );
+ currentsz = GET_CURRENT_VB_MAX_VERTS();
if (currentsz < 8)
currentsz = dmasz;
if (HAVE_LINES) {
LOCAL_VARS;
int dmasz = GET_SUBSEQUENT_VB_MAX_VERTS();
- int currentsz = GET_CURRENT_VB_MAX_VERTS();
+ int currentsz;
GLuint j, nr;
INIT( GL_LINES );
/* Emit whole number of lines in total and in each buffer:
*/
count -= (count-start) & 1;
+ currentsz = GET_CURRENT_VB_MAX_VERTS();
currentsz -= currentsz & 1;
dmasz -= dmasz & 1;
if (HAVE_LINE_STRIPS) {
LOCAL_VARS;
int dmasz = GET_SUBSEQUENT_VB_MAX_VERTS();
- int currentsz = GET_CURRENT_VB_MAX_VERTS();
+ int currentsz;
GLuint j, nr;
INIT( GL_LINE_STRIP );
+ currentsz = GET_CURRENT_VB_MAX_VERTS();
if (currentsz < 8)
currentsz = dmasz;
if (HAVE_LINE_STRIPS) {
LOCAL_VARS;
int dmasz = GET_SUBSEQUENT_VB_MAX_VERTS();
- int currentsz = GET_CURRENT_VB_MAX_VERTS();
+ int currentsz;
GLuint j, nr;
INIT( GL_LINE_STRIP );
/* Ensure last vertex won't wrap buffers:
*/
+ currentsz = GET_CURRENT_VB_MAX_VERTS();
currentsz--;
dmasz--;
{
LOCAL_VARS;
int dmasz = (GET_SUBSEQUENT_VB_MAX_VERTS()/3) * 3;
- int currentsz = (GET_CURRENT_VB_MAX_VERTS()/3) * 3;
+ int currentsz;
GLuint j, nr;
INIT(GL_TRIANGLES);
+ currentsz = (GET_CURRENT_VB_MAX_VERTS()/3) * 3;
+
/* Emit whole number of tris in total. dmasz is already a multiple
* of 3.
*/
LOCAL_VARS;
GLuint j, nr;
int dmasz = GET_SUBSEQUENT_VB_MAX_VERTS();
- int currentsz = GET_CURRENT_VB_MAX_VERTS();
+ int currentsz;
INIT(GL_TRIANGLE_FAN);
+ currentsz = GET_CURRENT_VB_MAX_VERTS();
if (currentsz < 8) {
currentsz = dmasz;
}
- for (j = start + 1 ; j + 1 < count; j += nr - 1 ) {
+ for (j = start + 1 ; j + 1 < count; j += nr - 2 ) {
void *tmp;
nr = MIN2( currentsz, count - j + 1 );
tmp = ALLOC_VERTS( nr );
LOCAL_VARS;
GLuint j, nr;
int dmasz = GET_SUBSEQUENT_VB_MAX_VERTS();
- int currentsz = GET_CURRENT_VB_MAX_VERTS();
+ int currentsz;
INIT(GL_POLYGON);
+ currentsz = GET_CURRENT_VB_MAX_VERTS();
if (currentsz < 8) {
currentsz = dmasz;
}
- for (j = start + 1 ; j + 1 < count ; j += nr - 1 ) {
+ for (j = start + 1 ; j + 1 < count ; j += nr - 2 ) {
void *tmp;
nr = MIN2( currentsz, count - j + 1 );
tmp = ALLOC_VERTS( nr );
INIT(GL_QUAD_STRIP);
currentsz = GET_CURRENT_VB_MAX_VERTS();
-
if (currentsz < 8) {
currentsz = dmasz;
}
else if (HAVE_TRI_STRIPS) {
LOCAL_VARS;
int dmasz = GET_SUBSEQUENT_VB_MAX_VERTS();
- int currentsz = GET_CURRENT_VB_MAX_VERTS();
+ int currentsz;
/* Emit smooth-shaded quadstrips as tristrips:
*/
/* Emit whole number of quads in total, and in each buffer.
*/
dmasz -= dmasz & 1;
+ currentsz = GET_CURRENT_VB_MAX_VERTS();
currentsz -= currentsz & 1;
count -= (count-start) & 1;
if (HAVE_QUADS) {
LOCAL_VARS;
int dmasz = (GET_SUBSEQUENT_VB_MAX_VERTS()/4) * 4;
- int currentsz = (GET_CURRENT_VB_MAX_VERTS()/4) * 4;
+ int currentsz;
GLuint j, nr;
INIT(GL_QUADS);
*/
count -= (count-start)%4;
+ currentsz = (GET_CURRENT_VB_MAX_VERTS()/4) * 4;
if (currentsz < 8)
currentsz = dmasz;
currentsz = dmasz;
}
- for (j = start + 1 ; j + 1 < count; j += nr - 1 ) {
+ for (j = start + 1 ; j + 1 < count; j += nr - 2 ) {
void *tmp;
nr = MIN2( currentsz, count - j + 1 );
tmp = ALLOC_ELTS( nr );
currentsz = dmasz;
}
- for (j = start + 1 ; j + 1 < count; j += nr - 1 ) {
+ for (j = start + 1 ; j + 1 < count; j += nr - 2 ) {
void *tmp;
nr = MIN2( currentsz, count - j + 1 );
tmp = ALLOC_ELTS( nr );
{
GLint i;
- if (VB->ClipOrMask)
+ if (VB->ClipOrMask & ~CLIP_CULL_BIT)
return GL_FALSE;
if (VB->Elts && !HAVE_ELTS)