Acme-MITHALDU-BleedingOpenGL
view release on metacpan or search on metacpan
pogl_gl_Vert_Multi.xs view on Meta::CPAN
GLsizei n
PPCODE:
if (n)
{
GLuint * buffers = malloc(sizeof(GLuint) * n);
int i;
glGenBuffers(n, buffers);
EXTEND(sp, n);
for(i=0;i<n;i++)
PUSHs(sv_2mortal(newSViv(buffers[i])));
free(buffers);
}
#//# glIsBuffer($buffer);
GLboolean
glIsBuffer(buffer)
GLuint buffer
CODE:
{
RETVAL = glIsBuffer(buffer);
}
OUTPUT:
RETVAL
#//# glBufferData_c($target,$size,(CPTR)data,$usage);
void
glBufferData_c(target,size,data,usage)
GLenum target
GLsizei size
void * data
GLenum usage
CODE:
{
glBufferData(target,size,data,usage);
}
#//# glBufferData_s($target,$size,(PACKED)data,$usage);
void
glBufferData_s(target,size,data,usage)
GLenum target
GLsizei size
SV * data
GLenum usage
CODE:
{
void * data_s = EL(data, size);
glBufferData(target,size,data_s,usage);
}
#//# glBufferData_p($target,(OGA)data,$usage);
void
glBufferData_p(target,oga,usage)
GLenum target
OpenGL::Array oga
GLenum usage
CODE:
{
glBufferData(target,oga->data_length,oga->data,usage);
}
#//# glBufferSubData_c($target,$offset,$size,(CPTR)data);
void
glBufferSubData_c(target,offset,size,data)
GLenum target
GLint offset
GLsizei size
void * data
CODE:
{
glBufferSubData(target,offset,size,data);
}
#//# glBufferSubData_s($target,$offset,$size,(PACKED)data);
void
glBufferSubData_s(target,offset,size,data)
GLenum target
GLint offset
GLsizei size
SV * data
CODE:
{
void * data_s = EL(data, size);
glBufferSubData(target,offset,size,data);
}
#//# glBufferSubData_p($target,$offset,(OGA)data);
void
glBufferSubData_p(target,offset,oga)
GLenum target
GLint offset
OpenGL::Array oga
CODE:
{
glBufferSubData(target,offset*oga->total_types_width,oga->data_length,oga->data);
}
#//# glGetBufferSubData_c($target,$offset,$size,(CPTR)data)
void
glGetBufferSubData_c(target,offset,size,data)
GLenum target
GLint offset
GLsizei size
void * data
CODE:
glGetBufferSubData(target,offset,size,data);
#//# glGetBufferSubData_s($target,$offset,$size,(PACKED)data)
void
glGetBufferSubData_s(target,offset,size,data)
GLenum target
GLint offset
GLsizei size
SV * data
CODE:
{
GLubyte * data_s = EL(data,size);
glGetBufferSubData(target,offset,size,data_s);
}
#//# $oga = glGetBufferSubData_p($target,$offset,$count,@types);
#//- If no types are provided, GLubyte is assumed
OpenGL::Array
glGetBufferSubData_p(target,offset,count,...)
GLenum target
GLint offset
GLsizei count
CODE:
{
oga_struct * oga = malloc(sizeof(oga_struct));
GLint size;
oga->item_count = count;
oga->type_count = (items - 3);
if (oga->type_count)
{
int i,j;
oga->types = malloc(sizeof(GLenum) * oga->type_count);
oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
for(i=0,j=0;i<oga->type_count;i++) {
oga->types[i] = SvIV(ST(i+3));
oga->type_offset[i] = j;
j += gl_type_size(oga->types[i]);
}
oga->total_types_width = j;
}
else
{
oga->type_count = 1;
oga->types = malloc(sizeof(GLenum) * oga->type_count);
oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
oga->types[0] = GL_UNSIGNED_BYTE;
oga->type_offset[0] = 0;
oga->total_types_width = gl_type_size(oga->types[0]);
}
if (!oga->total_types_width) croak("Unable to determine type sizes\n");
glGetBufferParameteriv(target,GL_BUFFER_SIZE,&size);
size /= oga->total_types_width;
if (offset > size) croak("Offset is greater than elements in buffer: %d\n",size);
if ((offset+count) > size) count = size - offset;
oga->data_length = oga->total_types_width * count;
oga->data = malloc(oga->data_length);
glGetBufferSubData(target,offset*oga->total_types_width,
oga->data_length,oga->data);
oga->free_data = 1;
RETVAL = oga;
}
OUTPUT:
RETVAL
#//# (CPTR)buffer = glMapBuffer_c($target,$access);
void *
glMapBuffer_c(target,access)
GLenum target
GLenum access
CODE:
RETVAL = glMapBuffer(target,access);
OUTPUT:
RETVAL
#define FIXME /* !!! Need to refactor with glGetBufferPointerv_p */
#//# $oga = glMapBuffer_p($target,$access,@types);
#//- If no types are provided, GLubyte is assumed
OpenGL::Array
glMapBuffer_p(target,access,...)
GLenum target
GLenum access
CODE:
{
GLsizeiptr size;
oga_struct * oga;
int i,j;
void * buffer = glMapBuffer(target,access);
if (!buffer) croak("Unable to map buffer\n");
glGetBufferParameteriv(target,GL_BUFFER_SIZE,(GLint*)&size);
if (!size) croak("Buffer has no size\n");
oga = malloc(sizeof(oga_struct));
oga->type_count = (items - 2);
if (oga->type_count)
{
oga->types = malloc(sizeof(GLenum) * oga->type_count);
oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
for(i=0,j=0;i<oga->type_count;i++) {
oga->types[i] = SvIV(ST(i+2));
oga->type_offset[i] = j;
j += gl_type_size(oga->types[i]);
}
oga->total_types_width = j;
}
else
{
oga->type_count = 1;
oga->types = malloc(sizeof(GLenum) * oga->type_count);
oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
oga->types[0] = GL_UNSIGNED_BYTE;
oga->type_offset[0] = 0;
oga->total_types_width = gl_type_size(oga->types[0]);
}
if (!oga->total_types_width) croak("Unable to determine type sizes\n");
oga->item_count = size / oga->total_types_width;
oga->data_length = oga->total_types_width * oga->item_count;
oga->data = buffer;
oga->free_data = 0;
RETVAL = oga;
}
OUTPUT:
RETVAL
#//# glUnmapBuffer($target);
GLboolean
glUnmapBuffer(target)
GLenum target
CODE:
RETVAL = glUnmapBuffer(target);
OUTPUT:
RETVAL
#//# glGetBufferParameteriv_c($target,$pname,(CPTR)params);
void
glGetBufferParameteriv_c(target,pname,params)
GLenum target
GLenum pname
void * params
CODE:
glGetBufferParameteriv(target,pname,params);
#//# glGetBufferParameteriv_s($target,$pname,(PACKED)params);
void
glGetBufferParameteriv_s(target,pname,params)
GLenum target
GLenum pname
SV * params
CODE:
{
GLint * params_s = EL(params, sizeof(GLint)*1);
glGetBufferParameteriv(target,pname,params_s);
}
#//# @params = glGetBufferParameteriv_p($target,$pname);
void
glGetBufferParameteriv_p(target,pname)
GLenum target
GLenum pname
PPCODE:
{
GLint ret;
glGetBufferParameteriv(target,pname,&ret);
PUSHs(sv_2mortal(newSViv(ret)));
}
#//# glGetBufferPointerv_c($target,$pname,(CPTR)params);
void
glGetBufferPointerv_c(target,pname,params)
GLenum target
GLenum pname
void * params
CODE:
glGetBufferPointerv(target,pname,¶ms);
pogl_gl_Vert_Multi.xs view on Meta::CPAN
#//# glGetBufferPointerv_s($target,$pname,(PACKED)params);
void
glGetBufferPointerv_s(target,pname,params)
GLenum target
GLenum pname
SV * params
CODE:
{
void ** params_s = EL(params, sizeof(void*));
glGetBufferPointerv(target,pname,params_s);
}
#//# $oga = glGetBufferPointerv_p($target,$pname,@types);
#//- If no types are provided, GLubyte is assumed
OpenGL::Array
glGetBufferPointerv_p(target,pname,...)
GLenum target
GLenum pname
CODE:
{
GLsizeiptr size;
oga_struct * oga;
void * buffer;
int i,j;
glGetBufferPointerv(target,pname,&buffer);
if (!buffer) croak("Buffer is not mapped\n");
glGetBufferParameteriv(target,GL_BUFFER_SIZE,(GLint*)&size);
if (!size) croak("Buffer has no size\n");
oga = malloc(sizeof(oga_struct));
oga->type_count = (items - 2);
if (oga->type_count)
{
oga->types = malloc(sizeof(GLenum) * oga->type_count);
oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
for(i=0,j=0;i<oga->type_count;i++) {
oga->types[i] = SvIV(ST(i+2));
oga->type_offset[i] = j;
j += gl_type_size(oga->types[i]);
}
oga->total_types_width = j;
}
else
{
oga->type_count = 1;
oga->types = malloc(sizeof(GLenum) * oga->type_count);
oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
oga->types[0] = GL_UNSIGNED_BYTE;
oga->type_offset[0] = 0;
oga->total_types_width = gl_type_size(oga->types[0]);
}
if (!oga->total_types_width) croak("Unable to determine type sizes\n");
oga->item_count = size / oga->total_types_width;
oga->data_length = oga->total_types_width * oga->item_count;
oga->data = buffer;
oga->free_data = 0;
RETVAL = oga;
}
OUTPUT:
RETVAL
#endif // GL_VERSION_1_4
#ifdef GL_ARB_vertex_buffer_object
#//# glBindBufferARB($target,$buffer);
void
glBindBufferARB(target,buffer)
GLenum target
GLuint buffer
INIT:
loadProc(glBindBufferARB,"glBindBufferARB");
CODE:
{
glBindBufferARB(target,buffer);
}
#//# glDeleteBuffersARB_c($n,(CPTR)buffers);
void
glDeleteBuffersARB_c(n,buffers)
GLsizei n
void * buffers
INIT:
loadProc(glDeleteBuffersARB,"glDeleteBuffersARB");
CODE:
{
glDeleteBuffersARB(n,buffers);
}
#//# glDeleteBuffersARB_s($n,(PACKED)buffers);
void
glDeleteBuffersARB_s(n,buffers)
GLsizei n
SV * buffers
INIT:
loadProc(glDeleteBuffersARB,"glDeleteBuffersARB");
CODE:
{
void * buffers_s = EL(buffers, sizeof(GLuint)*n);
glDeleteBuffersARB(n,buffers_s);
}
#//# glDeleteBuffersARB_p(@buffers);
void
glDeleteBuffersARB_p(...)
INIT:
loadProc(glDeleteBuffersARB,"glDeleteBuffersARB");
CODE:
{
if (items) {
pogl_gl_Vert_Multi.xs view on Meta::CPAN
EXTEND(sp, n);
for(i=0;i<n;i++)
PUSHs(sv_2mortal(newSViv(buffers[i])));
free(buffers);
}
#//# glIsBufferARB($buffer);
GLboolean
glIsBufferARB(buffer)
GLuint buffer
INIT:
loadProc(glIsBufferARB,"glIsBufferARB");
CODE:
{
RETVAL = glIsBufferARB(buffer);
}
OUTPUT:
RETVAL
#//# glBufferDataARB_c($target,$size,(CPTR)data,$usage);
void
glBufferDataARB_c(target,size,data,usage)
GLenum target
GLsizei size
void * data
GLenum usage
INIT:
loadProc(glBufferDataARB,"glBufferDataARB");
CODE:
{
glBufferDataARB(target,size,data,usage);
}
#//# glBufferDataARB_s($target,$size,(PACKED)data,$usage);
void
glBufferDataARB_s(target,size,data,usage)
GLenum target
GLsizei size
SV * data
GLenum usage
INIT:
loadProc(glBufferDataARB,"glBufferDataARB");
CODE:
{
void * data_s = EL(data, size);
glBufferDataARB(target,size,data_s,usage);
}
#//# glBufferDataARB_p($target,(OGA)data,$usage);
void
glBufferDataARB_p(target,oga,usage)
GLenum target
OpenGL::Array oga
GLenum usage
INIT:
loadProc(glBufferDataARB,"glBufferDataARB");
CODE:
{
glBufferDataARB(target,oga->data_length,oga->data,usage);
}
#//# glBufferSubDataARB_c($target,$offset,$size,(CPTR)data);
void
glBufferSubDataARB_c(target,offset,size,data)
GLenum target
GLint offset
GLsizei size
void * data
INIT:
loadProc(glBufferSubDataARB,"glBufferSubDataARB");
CODE:
{
glBufferSubDataARB(target,offset,size,data);
}
#//# glBufferSubDataARB_s($target,$offset,$size,(PACKED)data);
void
glBufferSubDataARB_s(target,offset,size,data)
GLenum target
GLint offset
GLsizei size
SV * data
INIT:
loadProc(glBufferSubDataARB,"glBufferSubDataARB");
CODE:
{
void * data_s = EL(data, size);
glBufferSubDataARB(target,offset,size,data);
}
#//# glBufferSubDataARB_p($target,$offset,(OGA)data);
void
glBufferSubDataARB_p(target,offset,oga)
GLenum target
GLint offset
OpenGL::Array oga
INIT:
loadProc(glBufferSubDataARB,"glBufferSubDataARB");
CODE:
{
glBufferSubDataARB(target,offset*oga->total_types_width,oga->data_length,oga->data);
}
#//# glGetBufferSubDataARB_c($target,$offset,$size,(CPTR)data)
void
glGetBufferSubDataARB_c(target,offset,size,data)
GLenum target
GLint offset
GLsizei size
void * data
INIT:
loadProc(glGetBufferSubDataARB,"glBufferSubDataARB");
CODE:
glGetBufferSubDataARB(target,offset,size,data);
#//# glGetBufferSubDataARB_s($target,$offset,$size,(PACKED)data)
void
glGetBufferSubDataARB_s(target,offset,size,data)
GLenum target
GLint offset
GLsizei size
SV * data
INIT:
loadProc(glGetBufferSubDataARB,"glBufferSubDataARB");
CODE:
{
GLubyte * data_s = EL(data,size);
glGetBufferSubDataARB(target,offset,size,data_s);
}
#//# $oga = glGetBufferSubDataARB_p($target,$offset,$count,@types);
#//- If no types are provided, GLubyte is assumed
OpenGL::Array
glGetBufferSubDataARB_p(target,offset,count,...)
GLenum target
GLint offset
GLsizei count
INIT:
loadProc(glGetBufferSubDataARB,"glGetBufferSubDataARB");
loadProc(glGetBufferParameterivARB,"glGetBufferParameterivARB");
CODE:
{
oga_struct * oga = malloc(sizeof(oga_struct));
GLint size;
oga->item_count = count;
oga->type_count = (items - 3);
if (oga->type_count)
{
int i,j;
oga->types = malloc(sizeof(GLenum) * oga->type_count);
oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
for(i=0,j=0;i<oga->type_count;i++) {
oga->types[i] = SvIV(ST(i+3));
oga->type_offset[i] = j;
j += gl_type_size(oga->types[i]);
}
oga->total_types_width = j;
}
else
{
oga->type_count = 1;
oga->types = malloc(sizeof(GLenum) * oga->type_count);
oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
oga->types[0] = GL_UNSIGNED_BYTE;
oga->type_offset[0] = 0;
oga->total_types_width = gl_type_size(oga->types[0]);
}
if (!oga->total_types_width) croak("Unable to determine type sizes\n");
glGetBufferParameterivARB(target,GL_BUFFER_SIZE_ARB,&size);
size /= oga->total_types_width;
if (offset > size) croak("Offset is greater than elements in buffer: %d\n",size);
if ((offset+count) > size) count = size - offset;
oga->data_length = oga->total_types_width * count;
oga->data = malloc(oga->data_length);
glGetBufferSubDataARB(target,offset*oga->total_types_width,
oga->data_length,oga->data);
oga->free_data = 1;
RETVAL = oga;
}
OUTPUT:
RETVAL
#//# (CPTR)buffer = glMapBufferARB_c($target,$access);
void *
glMapBufferARB_c(target,access)
GLenum target
GLenum access
INIT:
loadProc(glMapBufferARB,"glMapBufferARB");
CODE:
RETVAL = glMapBufferARB(target,access);
OUTPUT:
RETVAL
#define FIXME /* !!! Need to refactor with glGetBufferPointervARB_p */
#//# $oga = glMapBufferARB_p($target,$access,@types);
#//- If no types are provided, GLubyte is assumed
OpenGL::Array
glMapBufferARB_p(target,access,...)
GLenum target
GLenum access
INIT:
loadProc(glMapBufferARB,"glMapBufferARB");
loadProc(glGetBufferParameterivARB,"glGetBufferParameterivARB");
CODE:
{
GLsizeiptrARB size;
oga_struct * oga;
int i,j;
void * buffer = glMapBufferARB(target,access);
if (!buffer) croak("Unable to map buffer\n");
glGetBufferParameterivARB(target,GL_BUFFER_SIZE_ARB,(GLint*)&size);
if (!size) croak("Buffer has no size\n");
oga = malloc(sizeof(oga_struct));
oga->type_count = (items - 2);
if (oga->type_count)
{
oga->types = malloc(sizeof(GLenum) * oga->type_count);
oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
for(i=0,j=0;i<oga->type_count;i++) {
oga->types[i] = SvIV(ST(i+2));
oga->type_offset[i] = j;
j += gl_type_size(oga->types[i]);
}
oga->total_types_width = j;
}
else
{
oga->type_count = 1;
oga->types = malloc(sizeof(GLenum) * oga->type_count);
oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
oga->types[0] = GL_UNSIGNED_BYTE;
oga->type_offset[0] = 0;
oga->total_types_width = gl_type_size(oga->types[0]);
}
if (!oga->total_types_width) croak("Unable to determine type sizes\n");
oga->item_count = size / oga->total_types_width;
oga->data_length = oga->total_types_width * oga->item_count;
oga->data = buffer;
oga->free_data = 0;
RETVAL = oga;
}
OUTPUT:
RETVAL
#//# glUnmapBufferARB($target);
GLboolean
glUnmapBufferARB(target)
GLenum target
INIT:
loadProc(glUnmapBufferARB,"glUnmapBufferARB");
CODE:
RETVAL = glUnmapBufferARB(target);
OUTPUT:
RETVAL
#//# glGetBufferParameterivARB_c($target,$pname,(CPTR)params);
void
glGetBufferParameterivARB_c(target,pname,params)
GLenum target
GLenum pname
void * params
INIT:
loadProc(glGetBufferParameterivARB,"glGetBufferParameterivARB");
CODE:
glGetBufferParameterivARB(target,pname,params);
#//# glGetBufferParameterivARB_s($target,$pname,(PACKED)params);
void
glGetBufferParameterivARB_s(target,pname,params)
GLenum target
GLenum pname
SV * params
INIT:
loadProc(glGetBufferParameterivARB,"glGetBufferParameterivARB");
CODE:
{
GLint * params_s = EL(params, sizeof(GLint)*1);
glGetBufferParameterivARB(target,pname,params_s);
}
#//# @params = glGetBufferParameterivARB_p($target,$pname);
void
glGetBufferParameterivARB_p(target,pname)
GLenum target
GLenum pname
INIT:
loadProc(glGetBufferParameterivARB,"glGetBufferParameterivARB");
PPCODE:
{
GLint ret;
glGetBufferParameterivARB(target,pname,&ret);
PUSHs(sv_2mortal(newSViv(ret)));
}
pogl_gl_Vert_Multi.xs view on Meta::CPAN
SV * params
INIT:
loadProc(glGetBufferPointervARB,"glGetBufferPointervARB");
CODE:
{
void ** params_s = EL(params, sizeof(void*));
glGetBufferPointervARB(target,pname,params_s);
}
#//# $oga = glGetBufferPointervARB_p($target,$pname,@types);
#//- If no types are provided, GLubyte is assumed
OpenGL::Array
glGetBufferPointervARB_p(target,pname,...)
GLenum target
GLenum pname
INIT:
loadProc(glGetBufferPointervARB,"glGetBufferPointervARB");
loadProc(glGetBufferParameterivARB,"glGetBufferParameterivARB");
CODE:
{
GLsizeiptrARB size;
oga_struct * oga;
void * buffer;
int i,j;
glGetBufferPointervARB(target,pname,&buffer);
if (!buffer) croak("Buffer is not mapped\n");
glGetBufferParameterivARB(target,GL_BUFFER_SIZE_ARB,(GLint*)&size);
if (!size) croak("Buffer has no size\n");
oga = malloc(sizeof(oga_struct));
oga->type_count = (items - 2);
if (oga->type_count)
{
oga->types = malloc(sizeof(GLenum) * oga->type_count);
oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
for(i=0,j=0;i<oga->type_count;i++) {
oga->types[i] = SvIV(ST(i+2));
oga->type_offset[i] = j;
j += gl_type_size(oga->types[i]);
}
oga->total_types_width = j;
}
else
{
oga->type_count = 1;
oga->types = malloc(sizeof(GLenum) * oga->type_count);
oga->type_offset = malloc(sizeof(GLint) * oga->type_count);
oga->types[0] = GL_UNSIGNED_BYTE;
oga->type_offset[0] = 0;
oga->total_types_width = gl_type_size(oga->types[0]);
}
if (!oga->total_types_width) croak("Unable to determine type sizes\n");
oga->item_count = size / oga->total_types_width;
oga->data_length = oga->total_types_width * oga->item_count;
oga->data = buffer;
oga->free_data = 0;
RETVAL = oga;
}
OUTPUT:
RETVAL
#endif // GL_ARB_vertex_buffer_object
#if defined(GL_VERSION_1_2_1) || defined(GL_VERSION_1_3)
#//# glActiveTexture($texture);
void
glActiveTexture(texture)
GLenum texture
CODE:
glActiveTexture(texture);
#//# glClientActiveTexture($texture);
void
glClientActiveTexture(texture)
GLenum texture
CODE:
glClientActiveTexture(texture);
#//# glMultiTexCoord1d($target,$s)
void
glMultiTexCoord1d(target,s)
GLenum target
GLdouble s
CODE:
glMultiTexCoord1d(target,s);
#//# glMultiTexCoord1dv_c($target,(CPTR)v);
void
glMultiTexCoord1dv_c(target,v)
GLenum target
void *v
CODE:
glMultiTexCoord1dv(target,v);
#//# glMultiTexCoord1dv_s($target,(PACKED)v);
void
glMultiTexCoord1dv_s(target,v)
GLenum target
void *v
CODE:
{
GLdouble * v_s = EL(v, sizeof(GLdouble));
glMultiTexCoord1dv(target,v_s);
}
#//!!! Do we really need this? It duplicates glMultiTexCoord1d
#//# glMultiTexCoord1dv_p($target,$s);
void
glMultiTexCoord1dv_p(target,s)
( run in 0.536 second using v1.01-cache-2.11-cpan-5837b0d9d2c )