GLMULTITEXCOORDARB(3G)

πŸ“¦ version 1.1, in centos-stream 9, fedora 43, fedora 44

πŸ’– GLMULTITEXCOORDARB β€” it's giving "texture coords, but for EVERY unit" πŸ’–

okay bestie, listen. this page lives in the 3G manual section, and it's about the whole glMultiTexCoordARB family β€” thirty-two functions that all do the same iconic thing: they set the current texture coordinates for whichever texture unit you point at. not me being obsessed with multitexturing πŸ’…


✨ NAME ✨

glMultiTexCoord1dARB, glMultiTexCoord1fARB, glMultiTexCoord1iARB, glMultiTexCoord1sARB, glMultiTexCoord2dARB, glMultiTexCoord2fARB, glMultiTexCoord2iARB, glMultiTexCoord2sARB, glMultiTexCoord3dARB, glMultiTexCoord3fARB, glMultiTexCoord3iARB, glMultiTexCoord3sARB, glMultiTexCoord4dARB, glMultiTexCoord4fARB, glMultiTexCoord4iARB, glMultiTexCoord4sARB, glMultiTexCoord1dvARB, glMultiTexCoord1fvARB, glMultiTexCoord1ivARB, glMultiTexCoord1svARB, glMultiTexCoord2dvARB, glMultiTexCoord2fvARB, glMultiTexCoord2ivARB, glMultiTexCoord2svARB, glMultiTexCoord3dvARB, glMultiTexCoord3fvARB, glMultiTexCoord3ivARB, glMultiTexCoord3svARB, glMultiTexCoord4dvARB, glMultiTexCoord4fvARB, glMultiTexCoord4ivARB, glMultiTexCoord4svARB β€” set the current texture coordinates πŸŽ€

like. all thirty-two of them. one job. slay.


✨ C SPECIFICATION ✨ (the one where you pass numbers)

void glMultiTexCoord1dARB( GLenum target,
                           GLdouble s )
void glMultiTexCoord1fARB( GLenum target,
                           GLfloat s )
void glMultiTexCoord1iARB( GLenum target,
                           GLint s )
void glMultiTexCoord1sARB( GLenum target,
                           GLshort s )
void glMultiTexCoord2dARB( GLenum target,
                           GLdouble s,
                           GLdouble t )
void glMultiTexCoord2fARB( GLenum target,
                           GLfloat s,
                           GLfloat t )
void glMultiTexCoord2iARB( GLenum target,
                           GLint s,
                           GLint t )
void glMultiTexCoord2sARB( GLenum target,
                           GLshort s,
                           GLshort t )
void glMultiTexCoord3dARB( GLenum target,
                           GLdouble s,
                           GLdouble t,
                           GLdouble r )
void glMultiTexCoord3fARB( GLenum target,
                           GLfloat s,
                           GLfloat t,
                           GLfloat r )
void glMultiTexCoord3iARB( GLenum target,
                           GLint s,
                           GLint t,
                           GLint r )
void glMultiTexCoord3sARB( GLenum target,
                           GLshort s,
                           GLshort t,
                           GLshort r )
void glMultiTexCoord4dARB( GLenum target,
                           GLdouble s,
                           GLdouble t,
                           GLdouble r,
                           GLdouble q )
void glMultiTexCoord4fARB( GLenum target,
                           GLfloat s,
                           GLfloat t,
                           GLfloat r,
                           GLfloat q )
void glMultiTexCoord4iARB( GLenum target,
                           GLint s,
                           GLint t,
                           GLint r,
                           GLint q )
void glMultiTexCoord4sARB( GLenum target,
                           GLshort s,
                           GLshort t,
                           GLshort r,
                           GLshort q )

✨ PARAMETERS ✨ (round one 🫢)

  • target β€” which texture unit's coords you're out here modifying. the number of texture units is implementation dependent, but bestie, it must be at least two, no cap. has to be one of GL_TEXTUREi_ARB where 0 ≀ i < GL_MAX_TEXTURE_UNITS_ARB, and that max is an implementation-dependent value. iykyk.
  • s, t, r, q β€” the s, t, r, and q texture coordinates for the target texture unit. not all of these show up in every form of the command β€” like, glMultiTexCoord1dARB is NOT about to take four args, be so serious.

✨ C SPECIFICATION ✨ (the vector one, where you pass a pointer)

void glMultiTexCoord1dvARB( GLenum target,
                            const GLdouble *v )
void glMultiTexCoord1fvARB( GLenum target,
                            const GLfloat *v )
void glMultiTexCoord1ivARB( GLenum target,
                            const GLint *v )
void glMultiTexCoord1svARB( GLenum target,
                            const GLshort *v )
void glMultiTexCoord2dvARB( GLenum target,
                            const GLdouble *v )
void glMultiTexCoord2fvARB( GLenum target,
                            const GLfloat *v )
void glMultiTexCoord2ivARB( GLenum target,
                            const GLint *v )
void glMultiTexCoord2svARB( GLenum target,
                            const GLshort *v )
void glMultiTexCoord3dvARB( GLenum target,
                            const GLdouble *v )
void glMultiTexCoord3fvARB( GLenum target,
                            const GLfloat *v )
void glMultiTexCoord3ivARB( GLenum target,
                            const GLint *v )
void glMultiTexCoord3svARB( GLenum target,
                            const GLshort *v )
void glMultiTexCoord4dvARB( GLenum target,
                            const GLdouble *v )
void glMultiTexCoord4fvARB( GLenum target,
                            const GLfloat *v )
void glMultiTexCoord4ivARB( GLenum target,
                            const GLint *v )
void glMultiTexCoord4svARB( GLenum target,
                            const GLshort *v )

✨ PARAMETERS ✨ (round two, electric boogaloo πŸ¦‹)

  • target β€” same deal as before: the texture unit whose coordinates should be modified. the number of texture units is implementation dependent but must be at least two, and it must be one of GL_TEXTUREi_ARB, where 0 ≀ i < the implementation-dependent value of GL_MAX_TEXTURE_UNITS_ARB.
  • v β€” a pointer to an array of one, two, three, or four elements, which in turn specify the s, t, r, and q texture coordinates. so basically the same coords, just chillin' in an array instead. πŸ’…

✨ DESCRIPTION ✨

glMultiTexCoordARB specifies texture coordinates in one, two, three, or four dimensions. periodt.

  • glMultiTexCoord1ARB sets the current texture coordinates to (s, 0, 0, 1) ✨
  • glMultiTexCoord2ARB sets them to (s, t, 0, 1) πŸŽ€
  • glMultiTexCoord3ARB specifies the texture coordinates as (s, t, r, 1) 🌸
  • glMultiTexCoord4ARB defines all four components explicitly as (s, t, r, q) πŸ‘‘

like, the way that the missing components just get filled in with 0, 0, 1? main character energy honestly.

the current texture coordinates are part of the data that is associated with each vertex and with the current raster position. initially, the values for s, t, r, q are (0, 0, 0, 1).


✨ NOTES ✨ (read this part fr fr)

glMultiTexCoordARB is only supported if GL_ARB_multitexture is included in the string returned by glGetString when called with the argument GL_EXTENSIONS. so check first, bestie, don't just yolo it. 😭

the current texture coordinates can be updated at any time. in particular, glMultiTexCoordARB can be called between a call to glBegin and the corresponding call to glEnd. yes, inside the begin/end block. iconic behavior, no notes.

it is always the case that GL_TEXTUREi_ARB = GL_TEXTURE0_ARB + i. always. no exceptions. the math is mathing. 🧚


✨ ASSOCIATED GETS ✨

glGet with argument GL_CURRENT_TEXTURE_COORDS with the appropriate texture unit selected.


✨ SEE ALSO ✨

glActiveTextureARB(3G), glClientActiveTextureARB(3G), glTexCoord(3G), glTexCoordPointer(3G), glVertex(3G)


ok that's the whole page, nothing skipped, every single one of those thirty-two functions accounted for 🫢 go forth and multitexture responsibly.

that's a wrap on the 3G manual page for GLMULTITEXCOORDARB β€” same title up top, same title at the bottom, dated and versioned as ever in that footer. mwah. πŸ’–βœ¨πŸŽ€πŸ¦‹πŸŒΈπŸ’…πŸ‘‘πŸŒˆβ­πŸ’œ

πŸ“¦ where this page comes from