// 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)); } }
void APIENTRY gldMTexCoord2fvSGIS( GLenum target, const GLfloat *v) { GLenum ARB_target = GL_TEXTURE0_ARB + (target - GL_TEXTURE0_SGIS); glMultiTexCoord2fvARB(ARB_target, v); }
//=========================================================================== // 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); } }
//=========================================================================== // DG_MultiTexCoord2fv //=========================================================================== void DG_MultiTexCoord2fv(int target, float *data) { if(target == GL_TEXTURE0) glTexCoord2fv(data); else glMultiTexCoord2fvARB(GL_TEXTURE0 + (target - DGL_TEXTURE0), data); }
void __glXDisp_MultiTexCoord2fvARB(GLbyte *pc) { glMultiTexCoord2fvARB( *(GLenum *)(pc + 0), (GLfloat *)(pc + 4) ); }
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(); }
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; } } } }
void __stdcall glMultiTexCoord2fv(GLenum target, const GLfloat *v ) { if (!ARB_multitexture) return; glMultiTexCoord2fvARB(target, v); }