Acme-MITHALDU-BleedingOpenGL
view release on metacpan or search on metacpan
case GL_TEXTURE_WRAP_T:
case GL_TEXTURE_PRIORITY:
case GL_TEXTURE_RESIDENT:
return 1;
case GL_TEXTURE_BORDER_COLOR:
return 4;
default:
croak("Unknown texparameter parameter");
}
return 0; // Just to make the compiler happy
}
int gl_texenv_count(GLenum pname)
{
switch (pname) {
case GL_TEXTURE_ENV_MODE:
return 1;
case GL_TEXTURE_ENV_COLOR:
return 4;
default:
croak("Unknown texenv parameter");
}
return 0; // Just to make the compiler happy
}
int gl_texgen_count(GLenum pname)
{
switch (pname) {
case GL_TEXTURE_GEN_MODE:
return 1;
case GL_OBJECT_PLANE:
case GL_EYE_PLANE:
return 4;
default:
croak("Unknown texgen parameter");
}
return 0; // Just to make the compiler happy
}
int gl_material_count(GLenum pname)
{
switch (pname) {
case GL_AMBIENT:
case GL_DIFFUSE:
case GL_AMBIENT_AND_DIFFUSE:
case GL_SPECULAR:
case GL_EMISSION:
return 4;
case GL_COLOR_INDEXES:
return 3;
case GL_SHININESS:
return 1;
default:
croak("Unknown material parameter");
}
return 0; // Just to make the compiler happy
}
int gl_map_count(GLenum target, GLenum query)
{
switch (query) {
case GL_COEFF:
switch (target) {
case GL_MAP1_VERTEX_3:
case GL_MAP1_NORMAL:
case GL_MAP1_TEXTURE_COORD_3:
return 3;
case GL_MAP1_VERTEX_4:
case GL_MAP1_COLOR_4:
case GL_MAP1_TEXTURE_COORD_4:
return 4;
case GL_MAP1_TEXTURE_COORD_2:
return 2;
case GL_MAP1_INDEX:
case GL_MAP1_TEXTURE_COORD_1:
return 1;
case GL_MAP2_VERTEX_3:
case GL_MAP2_NORMAL:
case GL_MAP2_TEXTURE_COORD_3:
return 3;
case GL_MAP2_VERTEX_4:
case GL_MAP2_COLOR_4:
case GL_MAP2_TEXTURE_COORD_4:
return 4;
case GL_MAP2_TEXTURE_COORD_2:
return 2;
case GL_MAP2_INDEX:
case GL_MAP2_TEXTURE_COORD_1:
return 1;
default:
croak("Unknown map target");
}
case GL_ORDER:
switch (target) {
case GL_MAP1_VERTEX_3:
case GL_MAP1_NORMAL:
case GL_MAP1_TEXTURE_COORD_3:
case GL_MAP1_VERTEX_4:
case GL_MAP1_COLOR_4:
case GL_MAP1_TEXTURE_COORD_4:
case GL_MAP1_TEXTURE_COORD_2:
case GL_MAP1_INDEX:
case GL_MAP1_TEXTURE_COORD_1:
return 1;
case GL_MAP2_VERTEX_3:
case GL_MAP2_NORMAL:
case GL_MAP2_TEXTURE_COORD_3:
case GL_MAP2_VERTEX_4:
case GL_MAP2_COLOR_4:
case GL_MAP2_TEXTURE_COORD_4:
case GL_MAP2_TEXTURE_COORD_2:
case GL_MAP2_INDEX:
case GL_MAP2_TEXTURE_COORD_1:
return 2;
default:
croak("Unknown map target");
}
case GL_DOMAIN:
switch (target) {
case GL_MAP1_VERTEX_3:
case GL_MAP1_NORMAL:
case GL_MAP1_TEXTURE_COORD_3:
case GL_MAP1_VERTEX_4:
case GL_MAP1_COLOR_4:
case GL_MAP1_TEXTURE_COORD_4:
case GL_MAP1_TEXTURE_COORD_2:
case GL_MAP1_INDEX:
case GL_MAP1_TEXTURE_COORD_1:
return 2;
case GL_MAP2_VERTEX_3:
case GL_MAP2_NORMAL:
case GL_MAP2_TEXTURE_COORD_3:
case GL_MAP2_VERTEX_4:
case GL_MAP2_COLOR_4:
case GL_MAP2_TEXTURE_COORD_4:
case GL_MAP2_TEXTURE_COORD_2:
case GL_MAP2_INDEX:
case GL_MAP2_TEXTURE_COORD_1:
return 4;
default:
croak("Unknown map target");
}
default:
croak("Unknown map query");
}
return 0; // Just to make the compiler happy
}
int gl_light_count(GLenum pname)
{
switch (pname) {
case GL_AMBIENT:
case GL_DIFFUSE:
case GL_SPECULAR:
case GL_POSITION:
return 4;
case GL_SPOT_DIRECTION:
return 3;
case GL_SPOT_EXPONENT:
case GL_SPOT_CUTOFF:
case GL_CONSTANT_ATTENUATION:
case GL_LINEAR_ATTENUATION:
case GL_QUADRATIC_ATTENUATION:
return 1;
default:
croak("Unknown light parameter");
}
return 0; // Just to make the compiler happy
}
int gl_lightmodel_count(GLenum pname)
{
switch (pname) {
case GL_LIGHT_MODEL_AMBIENT:
return 4;
case GL_LIGHT_MODEL_LOCAL_VIEWER:
case GL_LIGHT_MODEL_TWO_SIDE:
return 1;
default:
croak("Unknown light model");
}
return 0; // Just to make the compiler happy
}
int gl_fog_count(GLenum pname)
{
switch (pname) {
case GL_FOG_COLOR:
return 4;
case GL_FOG_MODE:
case GL_FOG_DENSITY:
case GL_FOG_START:
case GL_FOG_END:
case GL_FOG_INDEX:
return 1;
default:
croak("Unknown fog parameter");
}
return 0; // Just to make the compiler happy
}
int gl_get_count(GLenum param)
{
case GL_UNPACK_LSB_FIRST:
case GL_UNPACK_ROW_LENGTH:
case GL_UNPACK_SKIP_PIXELS:
case GL_UNPACK_SKIP_ROWS:
case GL_UNPACK_SWAP_BYTES:
case GL_ZOOM_X:
case GL_ZOOM_Y:
case GL_MAX_ARRAY_TEXTURE_LAYERS:
return 1;
case GL_DEPTH_RANGE:
case GL_LINE_WIDTH_RANGE:
case GL_MAP1_GRID_DOMAIN:
case GL_MAP2_GRID_SEGMENTS:
case GL_MAX_VIEWPORT_DIMS:
case GL_POLYGON_MODE:
return 2;
case GL_CURRENT_NORMAL:
return 3;
case GL_ACCUM_CLEAR_VALUE:
case GL_BLEND_COLOR_EXT:
case GL_COLOR_CLEAR_VALUE:
case GL_COLOR_WRITEMASK:
case GL_CURRENT_COLOR:
case GL_CURRENT_RASTER_COLOR:
case GL_CURRENT_RASTER_POSITION:
case GL_CURRENT_RASTER_TEXTURE_COORDS:
case GL_CURRENT_TEXTURE_COORDS:
case GL_FOG_COLOR:
case GL_LIGHT_MODEL_AMBIENT:
case GL_MAP2_GRID_DOMAIN:
case GL_SCISSOR_BOX:
case GL_VIEWPORT:
return 4;
case GL_MODELVIEW_MATRIX:
case GL_PROJECTION_MATRIX:
case GL_TEXTURE_MATRIX:
return 16;
default:
{
/* GL_LIGHTi = 1 */
static GLint max_lights = 0;
if (!max_lights)
glGetIntegerv(GL_MAX_LIGHTS, &max_lights);
if ((param > GL_LIGHT0) && (param <= (GLenum)(GL_LIGHT0 + max_lights)))
return 1;
}
{
/* GL_CLIP_PLANEi = 1 */
static GLint max_clip_planes = 0;
if (!max_clip_planes)
glGetIntegerv(GL_MAX_CLIP_PLANES, &max_clip_planes);
if ((param > GL_CLIP_PLANE0) && (param <= (GLenum)(GL_CLIP_PLANE0 + max_clip_planes)))
return 1;
}
croak("Unknown param");
}
return 0; // Just to make the compiler happy
}
int gl_pixelmap_size(GLenum map)
{
GLint s;
switch (map) {
case GL_PIXEL_MAP_I_TO_I:
glGetIntegerv(GL_PIXEL_MAP_I_TO_I_SIZE, &s);
return s;
case GL_PIXEL_MAP_S_TO_S:
glGetIntegerv(GL_PIXEL_MAP_S_TO_S_SIZE, &s);
return s;
case GL_PIXEL_MAP_I_TO_R:
glGetIntegerv(GL_PIXEL_MAP_I_TO_R_SIZE, &s);
return s;
case GL_PIXEL_MAP_I_TO_G:
glGetIntegerv(GL_PIXEL_MAP_I_TO_G_SIZE, &s);
return s;
case GL_PIXEL_MAP_I_TO_B:
glGetIntegerv(GL_PIXEL_MAP_I_TO_B_SIZE, &s);
return s;
case GL_PIXEL_MAP_I_TO_A:
glGetIntegerv(GL_PIXEL_MAP_I_TO_A_SIZE, &s);
return s;
case GL_PIXEL_MAP_R_TO_R:
glGetIntegerv(GL_PIXEL_MAP_R_TO_R_SIZE, &s);
return s;
case GL_PIXEL_MAP_G_TO_G:
glGetIntegerv(GL_PIXEL_MAP_G_TO_G_SIZE, &s);
return s;
case GL_PIXEL_MAP_B_TO_B:
glGetIntegerv(GL_PIXEL_MAP_B_TO_B_SIZE, &s);
return s;
case GL_PIXEL_MAP_A_TO_A:
glGetIntegerv(GL_PIXEL_MAP_A_TO_A_SIZE, &s);
return s;
default:
croak("unknown pixelmap");
}
return 0; // Just to make the compiler happy
}
int gl_state_count(GLenum state) {
switch (state) {
case GL_CURRENT_COLOR: return 4;
case GL_CURRENT_INDEX: return 1;
}
return 0;
}
unsigned long gl_pixelbuffer_size(
GLenum format,
GLsizei width,
GLsizei height,
GLenum type,
int mode);
GLvoid * EL(SV * sv, int needlen)
{
STRLEN skip = 0;
SV * svref;
if (SvREADONLY(sv))
croak("Readonly value for buffer");
if(SvROK(sv)) {
svref = SvRV(sv);
sv = svref;
}
else
{
#ifdef USE_STRICT_UNGLOB
if (SvFAKE(sv) && SvTYPE(sv) == SVt_PVGV)
sv_unglob(sv);
#endif
SvUPGRADE(sv, SVt_PV);
SvGROW(sv, (unsigned int)(needlen + 1));
SvPOK_on(sv);
SvCUR_set(sv, needlen);
*SvEND(sv) = '\0'; /* Why is this here? -chm */
}
return SvPV_force(sv, skip);
}
GLvoid * ELI(SV * sv, GLsizei width, GLsizei height,
GLenum format, GLenum type, int mode)
{
int needlen = 0;
if (!SvROK(sv)) /* don't calc length if arg is a perl ref */
needlen = gl_pixelbuffer_size(format, width, height, type, mode);
return EL(sv, needlen);
}
int gl_type_size(GLenum type)
{
switch (type) {
( run in 1.761 second using v1.01-cache-2.11-cpan-39bf76dae61 )