void drawfastobj(fastobj *obj) { register GLint *p, *end; register int npolys; p = obj->data; end = p + 8 * obj->npoints; if(obj->colors) { npolys = obj->npoints/4; while(npolys--) { PolyOrLine(); glColor3iv(p); glVertex3fv((float *)p+4); glColor3iv(p+8); glVertex3fv((float *)p+12); glColor3iv(p+16); glVertex3fv((float *)p+20); glColor3iv(p+24); glVertex3fv((float *)p+28); EndPolyOrLine(); p += 32; } } else { while ( p < end) { PolyOrLine(); glNormal3fv((float *)p); glVertex3fv((float *)p+4); glNormal3fv((float *)p+8); glVertex3fv((float *)p+12); glNormal3fv((float *)p+16); glVertex3fv((float *)p+20); glNormal3fv((float *)p+24); glVertex3fv((float *)p+28); EndPolyOrLine(); p += 32; } } }
void GeomRenderer::sendColor(GLuint colorIndex) { assert(colorData.size == 3 || colorData.size == 4); switch(colorData.type) { case GL_BYTE: if (colorData.size == 3) glColor3bv((const GLbyte*)((const char*)colorData.pointer + colorIndex*colorData.stride)); if (colorData.size == 4) glColor4bv((const GLbyte*)((const char*)colorData.pointer + colorIndex*colorData.stride)); break; case GL_UNSIGNED_BYTE: if (colorData.size == 3) glColor3ubv((const GLubyte*)((const char*)colorData.pointer + colorIndex*colorData.stride)); if (colorData.size == 4) glColor4ubv((const GLubyte*)((const char*)colorData.pointer + colorIndex*colorData.stride)); break; case GL_SHORT: if (colorData.size == 3) glColor3sv((const GLshort*)((const char*)colorData.pointer + colorIndex*colorData.stride)); if (colorData.size == 4) glColor4sv((const GLshort*)((const char*)colorData.pointer + colorIndex*colorData.stride)); break; case GL_UNSIGNED_SHORT: if (colorData.size == 3) glColor3usv((const GLushort*)((const char*)colorData.pointer + colorIndex*colorData.stride)); if (colorData.size == 4) glColor4usv((const GLushort*)((const char*)colorData.pointer + colorIndex*colorData.stride)); break; case GL_INT: if (colorData.size == 3) glColor3iv((const GLint*)((const char*)colorData.pointer + colorIndex*colorData.stride)); if (colorData.size == 4) glColor4iv((const GLint*)((const char*)colorData.pointer + colorIndex*colorData.stride)); break; case GL_UNSIGNED_INT: if (colorData.size == 3) glColor3uiv((const GLuint*)((const char*)colorData.pointer + colorIndex*colorData.stride)); if (colorData.size == 4) glColor4uiv((const GLuint*)((const char*)colorData.pointer + colorIndex*colorData.stride)); break; case GL_FLOAT: if (colorData.size == 3) glColor3fv((const GLfloat*)((const char*)colorData.pointer + colorIndex*colorData.stride)); if (colorData.size == 4) glColor4fv((const GLfloat*)((const char*)colorData.pointer + colorIndex*colorData.stride)); break; case GL_DOUBLE: if (colorData.size == 3) glColor3dv((const GLdouble*)((const char*)colorData.pointer + colorIndex*colorData.stride)); if (colorData.size == 4) glColor4dv((const GLdouble*)((const char*)colorData.pointer + colorIndex*colorData.stride)); break; } }
template< > inline void glColor3v< Vector3i > ( const Vector3i v ) { glColor3iv((int*)&v); };
inline void glColor3v( const GLint * v ) { glColor3iv( v ); }
M(void, glColor3iv, jobject v) { glColor3iv(BUFF(GLint, v)); }
///////////////////////////////////////////////////////// // Render // void GEMglColor3iv :: render(GemState *state) { glColor3iv (v); }
void __glXDisp_Color3iv(GLbyte *pc) { glColor3iv( (GLint *)(pc + 0) ); }