Exemplo n.º 1
0
// submit one indice for rendering (direct-mode)
void mesh_vertex::set(int indice)
{
  int i;
  for(i = 0; i < text_num; i++) {
    if(p_uv[i]) {
      //pprintf("[%d][%d] glMultiTexCoord2fvARB(%f,%f)",indice,i,p_uv[i][indice].u,p_uv[i][indice].v);
      glMultiTexCoord2fvARB(gl_ext::ext_multitexture_text_index[i],(float *)(p_uv[i]+indice));
    }
  }
  /*
  if(specular_num && p_specular[0]) {
    pprintf("[%d] glSecondaryColor3fvEXT(%f,%f,%f)",indice,p_specular[0][indice].r,p_specular[0][indice].g,p_specular[0][indice].b);
    glSecondaryColor3fvEXT((float *)(p_specular[0]+indice));
  }
  */
  if(diffuse_num && p_diffuse[0]) {
    //pprintf("[%d] glColor4fv(%f,%f,%f,%f)",indice,p_diffuse[0][indice].r,p_diffuse[0][indice].g,p_diffuse[0][indice].b,p_diffuse[0][indice].a);
    glColor4fv((float *)(p_diffuse[0]+indice));
  }
  if(normal_num && p_norm[0]) {
    //pprintf("[%d] glNormal3fv(%f,%f,%f)",indice,p_norm[0][indice].x,p_norm[0][indice].y,p_norm[0][indice].z);
    glNormal3fv((float *)(p_norm[0]+indice));
  }
  if(p_pos[0]) {
    //pprintf("[%d] glVertex3fv(%f,%f,%f)",indice,p_pos[0][indice].x,p_pos[0][indice].y,p_pos[0][indice].z);
    glVertex3fv((float *)(p_pos[0]+indice));
  }
}
Exemplo n.º 2
0
void APIENTRY gldMTexCoord2fvSGIS(
	GLenum target,
	const GLfloat *v)
{
	GLenum ARB_target = GL_TEXTURE0_ARB + (target - GL_TEXTURE0_SGIS);
	glMultiTexCoord2fvARB(ARB_target, v);
}
Exemplo n.º 3
0
//===========================================================================
// DG_ArrayElement
//===========================================================================
void DG_ArrayElement(int index)
{
	if(!noArrays)
	{
		glArrayElement(index);
	}
	else
	{
		int     i;

		for(i = 0; i < maxTexUnits && i < MAX_TEX_UNITS; i++)
		{
			if(arrays[AR_TEXCOORD0 + i].enabled)
			{
				glMultiTexCoord2fvARB(GL_TEXTURE0 + i,
									  ((gl_texcoord_t *)
									   arrays[AR_TEXCOORD0 +
											  i].data)[index].st);
			}
		}

		if(arrays[AR_COLOR].enabled)
			glColor4ubv(((gl_color_t *) arrays[AR_COLOR].data)[index].rgba);

		if(arrays[AR_VERTEX].enabled)
			glVertex3fv(((gl_vertex_t *) arrays[AR_VERTEX].data)[index].xyz);
	}
}
Exemplo n.º 4
0
//===========================================================================
// DG_MultiTexCoord2fv
//===========================================================================
void DG_MultiTexCoord2fv(int target, float *data)
{
	if(target == GL_TEXTURE0)
		glTexCoord2fv(data);
	else
		glMultiTexCoord2fvARB(GL_TEXTURE0 + (target - DGL_TEXTURE0), data);
}
Exemplo n.º 5
0
Arquivo: g_render.c Projeto: aosm/X11
void __glXDisp_MultiTexCoord2fvARB(GLbyte *pc)
{
	glMultiTexCoord2fvARB( 
		*(GLenum   *)(pc + 0),
		(GLfloat  *)(pc + 4)
	);
}
Exemplo n.º 6
0
static void DrawObject(void)
{
   GLint i;
   GLint j;
   static const GLfloat   tex_coords[] = {  0.0,  0.0,  1.0,  1.0,  0.0 };
   static const GLfloat   vtx_coords[] = { -1.0, -1.0,  1.0,  1.0, -1.0 };

   if (!TexEnabled[0] && !TexEnabled[1])
      glColor3f(0.1, 0.1, 0.1);  /* add onto this */
   else
      glColor3f(1, 1, 1);  /* modulate this */

   glBegin(GL_QUADS);

   /* Toggle between the vector and scalar entry points.  This is done purely
    * to hit multiple paths in the driver.
    */
   if ( Drift > 0.49 ) {
      for (j = 0; j < 4; j++ ) {
	 for (i = 0; i < NumUnits; i++)
	    glMultiTexCoord2fARB(GL_TEXTURE0_ARB + i, 
				 tex_coords[j], tex_coords[j+1]);
	 glVertex2f( vtx_coords[j], vtx_coords[j+1] );
      }
   }
   else {
      for (j = 0; j < 4; j++ ) {
	 for (i = 0; i < NumUnits; i++)
	    glMultiTexCoord2fvARB(GL_TEXTURE0_ARB + i, & tex_coords[j]);
	 glVertex2fv( & vtx_coords[j] );
      }
   }

   glEnd();
}
Exemplo n.º 7
0
	void	multi_tex_coord_2fv(int stage, float* st)
	// Texture coords for the current vertex, in the specified
	// stage.
	{
		if (glMultiTexCoord2fvARB)
		{
			glMultiTexCoord2fvARB(stage, st);
		}
	}
void RAS_StorageIM::TexCoord(const RAS_TexVert &tv)
{
	int unit;

	if (GLEW_ARB_multitexture) {
		for (unit = 0; unit < *m_texco_num; unit++) {
			switch (m_texco[unit]) {
				case RAS_IRasterizer::RAS_TEXCO_ORCO:
				case RAS_IRasterizer::RAS_TEXCO_GLOB:
					glMultiTexCoord3fvARB(GL_TEXTURE0_ARB + unit, tv.getXYZ());
					break;
				case RAS_IRasterizer::RAS_TEXCO_UV:
					glMultiTexCoord2fvARB(GL_TEXTURE0_ARB + unit, tv.getUV(unit));
					break;
				case RAS_IRasterizer::RAS_TEXCO_NORM:
					glMultiTexCoord3fvARB(GL_TEXTURE0_ARB + unit, tv.getNormal());
					break;
				case RAS_IRasterizer::RAS_TEXTANGENT:
					glMultiTexCoord4fvARB(GL_TEXTURE0_ARB + unit, tv.getTangent());
					break;
				default:
					break;
			}
		}
	}

	if (GLEW_ARB_vertex_program) {
		for (unit = 0; unit < *m_attrib_num; unit++) {
			switch (m_attrib[unit]) {
				case RAS_IRasterizer::RAS_TEXCO_ORCO:
				case RAS_IRasterizer::RAS_TEXCO_GLOB:
					glVertexAttrib3fvARB(unit, tv.getXYZ());
					break;
				case RAS_IRasterizer::RAS_TEXCO_UV:
					glVertexAttrib2fvARB(unit, tv.getUV(m_attrib_layer[unit]));
					break;
				case RAS_IRasterizer::RAS_TEXCO_NORM:
					glVertexAttrib3fvARB(unit, tv.getNormal());
					break;
				case RAS_IRasterizer::RAS_TEXTANGENT:
					glVertexAttrib4fvARB(unit, tv.getTangent());
					break;
				case RAS_IRasterizer::RAS_TEXCO_VCOL:
					glVertexAttrib4ubvARB(unit, tv.getRGBA());
					break;
				default:
					break;
			}
		}
	}

}
Exemplo n.º 9
0
void __stdcall glMultiTexCoord2fv(GLenum target, const GLfloat *v )
{
 if (!ARB_multitexture) return;
 glMultiTexCoord2fvARB(target, v);
}