OpenGL
view release on metacpan or search on metacpan
lib/OpenGL/V2.xs view on Meta::CPAN
{
GLint len;
glGetProgramivARB(target,GL_PROGRAM_LENGTH_ARB,(GLvoid *)&len);
if (len)
{
char * string = malloc(len+1);
glGetProgramStringARB(target,pname,(GLubyte*)string);
string[len] = 0;
if (*string)
RETVAL = newSVpv(string, 0);
else
RETVAL = newSVsv(&PL_sv_undef);
free(string);
}
else
{
RETVAL = newSVsv(&PL_sv_undef);
}
}
OUTPUT:
RETVAL
#endif // GL_ARB_vertex_program
#if defined(GL_ARB_vertex_program) || defined(GL_ARB_vertex_shader)
#//# glVertexAttribPointerARB_p($index,$type,$normalized,$stride,@attribs);
void
glVertexAttribPointerARB_p(index,type,normalized,stride,...)
GLuint index
GLenum type
GLboolean normalized
GLsizei stride
INIT:
loadProc(glVertexAttribPointerARB,"glVertexAttribPointerARB");
CODE:
{
GLuint count = items - 4;
int size = gl_type_size(type);
if (size < 0) croak("unknown type");
void * pointer = malloc(count * size);
SvItems(type,4,count,pointer);
glVertexAttribPointerARB(index,count,type,
normalized,stride,pointer);
free(pointer);
}
#//# $param = glGetVertexAttribPointervARB_p($index,$pname);
void
glGetVertexAttribPointervARB_p(index,pname)
GLuint index
GLenum pname
INIT:
loadProc(glGetVertexAttribPointervARB,"glGetVertexAttribPointervARB");
loadProc(glGetVertexAttribivARB,"glGetVertexAttribivARB");
PPCODE:
{
void * pointer;
GLuint i,count,type;
glGetVertexAttribPointervARB(index,pname,&pointer);
glGetVertexAttribivARB(index,GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB,(void *)&count);
glGetVertexAttribivARB(index,GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB,(void *)&type);
EXTEND(sp, count);
switch (type)
{
#ifdef GL_VERSION_1_2
case GL_UNSIGNED_BYTE_3_3_2:
case GL_UNSIGNED_BYTE_2_3_3_REV:
for (i=0;i<count;i++)
{
PUSHs(sv_2mortal(newSViv(((GLubyte*)pointer)[i])));
}
break;
case GL_UNSIGNED_SHORT_5_6_5:
case GL_UNSIGNED_SHORT_5_6_5_REV:
case GL_UNSIGNED_SHORT_4_4_4_4:
case GL_UNSIGNED_SHORT_4_4_4_4_REV:
case GL_UNSIGNED_SHORT_5_5_5_1:
case GL_UNSIGNED_SHORT_1_5_5_5_REV:
for (i=0;i<count;i++)
{
PUSHs(sv_2mortal(newSViv(((GLushort*)pointer)[i])));
}
break;
case GL_UNSIGNED_INT_8_8_8_8:
case GL_UNSIGNED_INT_8_8_8_8_REV:
case GL_UNSIGNED_INT_10_10_10_2:
case GL_UNSIGNED_INT_2_10_10_10_REV:
for (i=0;i<count;i++)
{
PUSHs(sv_2mortal(newSViv(((GLuint*)pointer)[i])));
}
break;
#endif
case GL_UNSIGNED_BYTE:
case GL_BITMAP:
for (i=0;i<count;i++)
{
PUSHs(sv_2mortal(newSViv(((GLubyte*)pointer)[i])));
}
break;
case GL_BYTE:
for (i=0;i<count;i++)
{
PUSHs(sv_2mortal(newSViv(((GLbyte*)pointer)[i])));
}
break;
case GL_UNSIGNED_SHORT:
for (i=0;i<count;i++)
{
PUSHs(sv_2mortal(newSViv(((GLushort*)pointer)[i])));
}
break;
case GL_SHORT:
for (i=0;i<count;i++)
{
lib/OpenGL/V2.xs view on Meta::CPAN
#//# glGetObjectParameterivARB_s($obj,$pname,(PACKED)params);
void
glGetObjectParameterivARB_s(obj,pname,params)
GLhandleARB obj
GLenum pname
SV *params
INIT:
loadProc(glGetObjectParameterivARB,"glGetObjectParameterivARB");
CODE:
{
GLint * params_s = EL(params, sizeof(GLint));
glGetObjectParameterivARB(obj,pname,params_s);
}
#//# $param = glGetObjectParameterivARB_p($obj,$pname);
GLint
glGetObjectParameterivARB_p(obj,pname)
GLhandleARB obj
GLenum pname
INIT:
loadProc(glGetObjectParameterivARB,"glGetObjectParameterivARB");
CODE:
{
GLint ret;
glGetObjectParameterivARB(obj,pname,&ret);
RETVAL = ret;
}
OUTPUT:
RETVAL
#//# glGetAttachedObjectsARB_s($containerObj, $maxCount, (PACKED)count, (PACKED)obj);
void
glGetAttachedObjectsARB_s(containerObj, maxCount, count, obj)
GLhandleARB containerObj
GLsizei maxCount
void *count
SV *obj
INIT:
loadProc(glGetObjectParameterivARB,"glGetObjectParameterivARB");
loadProc(glGetAttachedObjectsARB,"glGetAttachedObjectsARB");
CODE:
{
GLint len;
glGetObjectParameterivARB(containerObj,GL_OBJECT_ATTACHED_OBJECTS_ARB,
(GLvoid *)&len);
if (len)
{
GLsizei * count_s = EL(count, sizeof(GLsizei));
GLhandleARB * obj_s = EL(obj, sizeof(GLhandleARB)*len);
glGetAttachedObjectsARB(containerObj, maxCount, count_s, obj_s);
}
}
#//# @objs = glGetAttachedObjectsARB_p($containerObj);
void
glGetAttachedObjectsARB_p(containerObj)
GLhandleARB containerObj
INIT:
loadProc(glGetObjectParameterivARB,"glGetObjectParameterivARB");
loadProc(glGetAttachedObjectsARB,"glGetAttachedObjectsARB");
PPCODE:
{
GLsizei maxCount;
GLsizei count;
GLhandleARB *obj;
int i;
glGetObjectParameterivARB(containerObj,GL_OBJECT_ATTACHED_OBJECTS_ARB,
(GLvoid *)&maxCount);
obj = malloc(sizeof(GLhandleARB)*maxCount);
glGetAttachedObjectsARB(containerObj, maxCount, &count, obj);
EXTEND(sp, count);
for(i=0;i<count;i++)
PUSHs(sv_2mortal(newSViv((IV)obj[i])));
free(obj);
}
#//# @params = glGetUniformfvARB_p($programObj, $location[, $count]);
void
glGetUniformfvARB_p(programObj, location, count=1)
GLhandleARB programObj
GLint location
int count
INIT:
loadProc(glGetUniformfvARB,"glGetUniformfvARB");
CODE:
{
int i;
GLfloat *ret = malloc(sizeof(GLfloat)*count);
glGetUniformfvARB(programObj, location, ret);
for(i=0;i<count;i++)
PUSHs(sv_2mortal(newSVnv(ret[i])));
}
#//# @params = glGetUniformivARB_p($programObj, $location[, $count]);
void
glGetUniformivARB_p(programObj, location, count=1)
GLhandleARB programObj
GLint location
int count
INIT:
loadProc(glGetUniformivARB,"glGetUniformivARB");
CODE:
{
int i;
GLint *ret = malloc(sizeof(GLint)*count);
glGetUniformivARB(programObj, location, ret);
for(i=0;i<count;i++)
PUSHs(sv_2mortal(newSViv(ret[i])));
}
#endif // GL_ARB_shader_objects
INCLUDE: ../../auto-xs.inc
#endif /* HAVE_GL */
( run in 0.675 second using v1.01-cache-2.11-cpan-5511b514fd6 )