void GeomRenderer::sendTexCoord(GLuint texCoordIndex) { assert(texCoordData.size >= 1 && texCoordData.size <= 4); switch(texCoordData.type) { case GL_SHORT: if (texCoordData.size == 1) glTexCoord1sv((const GLshort*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); if (texCoordData.size == 2) glTexCoord2sv((const GLshort*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); if (texCoordData.size == 3) glTexCoord3sv((const GLshort*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); if (texCoordData.size == 4) glTexCoord4sv((const GLshort*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); break; case GL_INT: if (texCoordData.size == 1) glTexCoord1iv((const GLint*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); if (texCoordData.size == 2) glTexCoord2iv((const GLint*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); if (texCoordData.size == 3) glTexCoord3iv((const GLint*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); if (texCoordData.size == 4) glTexCoord4iv((const GLint*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); break; case GL_FLOAT: if (texCoordData.size == 1) glTexCoord1fv((const GLfloat*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); if (texCoordData.size == 2) glTexCoord2fv((const GLfloat*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); if (texCoordData.size == 3) glTexCoord3fv((const GLfloat*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); if (texCoordData.size == 4) glTexCoord4fv((const GLfloat*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); break; case GL_DOUBLE: if (texCoordData.size == 1) glTexCoord1dv((const GLdouble*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); if (texCoordData.size == 2) glTexCoord2dv((const GLdouble*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); if (texCoordData.size == 3) glTexCoord3dv((const GLdouble*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); if (texCoordData.size == 4) glTexCoord4dv((const GLdouble*)((const char*)texCoordData.pointer + texCoordIndex*texCoordData.stride)); break; } }
void __glXDisp_TexCoord3dv(GLbyte *pc) { #ifdef __GLX_ALIGN64 if ((unsigned long)(pc) & 7) { __GLX_MEM_COPY(pc-4, pc, 24); pc -= 4; } #endif glTexCoord3dv( (GLdouble *)(pc + 0) ); }
void CALLBACK vertexCallback(GLvoid *vertexData, void *data) { GLdouble *v = (GLdouble *) vertexData; DVRRenderSlice *sliceData = (DVRRenderSlice *) data; if(sliceData->directRender) { switch(sliceData->orientation) { case DVRRenderSlice::UNDEFINED: // 3D texture glTexCoord3dv(&v[3]); break; case DVRRenderSlice::XY: glTexCoord2d(v[3], v[4]); break; case DVRRenderSlice::XZ: glTexCoord2d(v[3], v[5]); break; case DVRRenderSlice::YZ: glTexCoord2d(v[4], v[5]); break; default: break; } glVertex3dv(v); } else { sliceData->back()->vertices.push_back(v); } }
void texture3(const Point &p) { glTexCoord3dv(p.v); }
template< > inline void glTexCoord3v< Vector3r > ( const Vector3r v ) { glTexCoord3dv((double*)&v); };
///////////////////////////////////////////////////////// // Render // void GEMglTexCoord3dv :: render(GemState *state) { glTexCoord3dv (v); }
inline void glTexCoord3v( const GLdouble * v ) { glTexCoord3dv( v ); }
M(void, glTexCoord3dv, jobject v) { glTexCoord3dv(BUFF(GLdouble, v)); }