- glColorPointer(4, GL_FLOAT, sizeof(buf_fcolor_t), &buf_fcolor[0].c[0]);
-CHECKGLERROR
- }
- else
- {
- // shift float to have 8bit fraction at base of number
- for (i = 0, fcolor = &buf_fcolor->c[0];i < currentvertex;i++)
- {
- *fcolor++ += 32768.0f;
- *fcolor++ += 32768.0f;
- *fcolor++ += 32768.0f;
- *fcolor++ += 32768.0f;
- }
- // then read as integer and kill float bits...
- for (i = 0, icolor = (int *)&buf_fcolor->c[0], bcolor = &buf_bcolor->c[0];i < currentvertex;i++)
- {
- k = (*icolor++) & 0x7FFFFF;*bcolor++ = k > 255 ? 255 : k;
- k = (*icolor++) & 0x7FFFFF;*bcolor++ = k > 255 ? 255 : k;
- k = (*icolor++) & 0x7FFFFF;*bcolor++ = k > 255 ? 255 : k;
- k = (*icolor++) & 0x7FFFFF;*bcolor++ = k > 255 ? 255 : k;
- }
- glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(buf_bcolor_t), &buf_bcolor[0].c[0]);
-CHECKGLERROR
- }
- glEnableClientState(GL_COLOR_ARRAY);
-CHECKGLERROR
-
- if (backendunits > 1)
- {
- for (i = 0;i < backendunits;i++)
- {
- qglActiveTexture(GL_TEXTURE0_ARB + (unit = i));
-CHECKGLERROR
- glBindTexture(GL_TEXTURE_2D, (texture[i] = 0));
-CHECKGLERROR
- glDisable(GL_TEXTURE_2D);
-CHECKGLERROR
- if (gl_combine.integer)
- {
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_MODULATE);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_TEXTURE);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_PREVIOUS_ARB);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_RGB_ARB, GL_CONSTANT_ARB);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_RGB_ARB, GL_SRC_ALPHA);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_ALPHA_ARB, GL_MODULATE);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_ARB, GL_TEXTURE);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE1_ALPHA_ARB, GL_PREVIOUS_ARB);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_SOURCE2_ALPHA_ARB, GL_CONSTANT_ARB);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND0_ALPHA_ARB, GL_SRC_ALPHA);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND1_ALPHA_ARB, GL_SRC_ALPHA);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_OPERAND2_ALPHA_ARB, GL_SRC_ALPHA);
-CHECKGLERROR
- glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE_ARB, 1.0f);
-CHECKGLERROR
- glTexEnvf(GL_TEXTURE_ENV, GL_ALPHA_SCALE, 1.0f);
-CHECKGLERROR
- }
- else
- {
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-CHECKGLERROR
- }
-
- qglClientActiveTexture(GL_TEXTURE0_ARB + (clientunit = i));
-CHECKGLERROR
- glTexCoordPointer(2, GL_FLOAT, sizeof(buf_texcoord_t), buf_texcoord[i]);
-CHECKGLERROR
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-CHECKGLERROR
- }
- }
- else
- {
- glBindTexture(GL_TEXTURE_2D, (texture[0] = 0));
-CHECKGLERROR
- glDisable(GL_TEXTURE_2D);
-CHECKGLERROR
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
-CHECKGLERROR
-
- glTexCoordPointer(2, GL_FLOAT, sizeof(buf_texcoord_t), buf_texcoord[0]);
-CHECKGLERROR
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-CHECKGLERROR
- }
-
- // lock as early as possible
- GL_LockArray(0, currentvertex);
-CHECKGLERROR
-
- for (k = 0, mesh = buf_mesh;k < currentmesh;k++, mesh++)
- {
- if (backendunits > 1)
- {
-// int topunit = 0;
- for (i = 0;i < backendunits;i++)
- {
- if (texture[i] != mesh->textures[i])
- {
- if (unit != i)
- {
- qglActiveTexture(GL_TEXTURE0_ARB + (unit = i));
-CHECKGLERROR
- }
- if (texture[i] == 0)
- {
- glEnable(GL_TEXTURE_2D);
-CHECKGLERROR
- // have to disable texcoord array on disabled texture
- // units due to NVIDIA driver bug with
- // compiled_vertex_array
- if (clientunit != i)
- {
- qglClientActiveTexture(GL_TEXTURE0_ARB + (clientunit = i));
-CHECKGLERROR
- }
- glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-CHECKGLERROR
- }
- glBindTexture(GL_TEXTURE_2D, (texture[i] = mesh->textures[i]));
-CHECKGLERROR
- if (texture[i] == 0)
- {
- glDisable(GL_TEXTURE_2D);
-CHECKGLERROR
- // have to disable texcoord array on disabled texture
- // units due to NVIDIA driver bug with
- // compiled_vertex_array
- if (clientunit != i)
- {
- qglClientActiveTexture(GL_TEXTURE0_ARB + (clientunit = i));
-CHECKGLERROR
- }
- glDisableClientState(GL_TEXTURE_COORD_ARRAY);
-CHECKGLERROR
- }
- }
- if (texturergbscale[i] != mesh->texturergbscale[i])
- {
- if (unit != i)
- {
- qglActiveTexture(GL_TEXTURE0_ARB + (unit = i));
-CHECKGLERROR
- }
- glTexEnvf(GL_TEXTURE_ENV, GL_RGB_SCALE_ARB, (texturergbscale[i] = mesh->texturergbscale[i]));
-CHECKGLERROR
- }
-// if (texture[i])
-// topunit = i;
- }
-// if (unit != topunit)
-// {
-// qglActiveTexture(GL_TEXTURE0_ARB + (unit = topunit));
-//CHECKGLERROR
-// }