Acme-MITHALDU-BleedingOpenGL
view release on metacpan or search on metacpan
pogl_glu.xs view on Meta::CPAN
GLint tknot_count
void * tknot
GLint s_stride
GLint t_stride
void * ctrlarray
GLint sorder
GLint torder
GLenum type
CODE:
gluNurbsSurface(nurb, sknot_count, sknot, tknot_count, tknot, s_stride, t_stride, ctrlarray, sorder, torder, type);
#//# gluOrtho2D($left, $right, $bottom, $top);
void
gluOrtho2D(left, right, bottom, top)
GLdouble left
GLdouble right
GLdouble bottom
GLdouble top
#// gluPartialDisk(quad, inner, outer, slices, loops, start, sweep);
void
gluPartialDisk(quad, inner, outer, slices, loops, start, sweep)
GLUquadricObj* quad
GLdouble inner
GLdouble outer
GLint slices
GLint loops
GLdouble start
GLdouble sweep
#//# gluPerspective($fovy, $aspect, $zNear, $zFar);
void
gluPerspective(fovy, aspect, zNear, zFar)
GLdouble fovy
GLdouble aspect
GLdouble zNear
GLdouble zFar
#//# gluPickMatrix_p($x, $y, $delX, $delY, $m1,$m2,$m3,$m4);
void
gluPickMatrix_p(x, y, delX, delY, m1,m2,m3,m4)
GLdouble x
GLdouble y
GLdouble delX
GLdouble delY
CODE:
{
GLint m[4];
int i;
for (i=0;i<4;i++)
m[i] = SvIV(ST(i+4));
gluPickMatrix(x, y, delX, delY, &m[0]);
}
#//# gluProject_p($objx, $objy, $objz, @m4x4, @o4x4, $v1,$v2,$v3,$v4);
void
gluProject_p(objx, objy, objz, m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16, o1,o2,o3,o4,o5,o6,o7,o8,o9,o10,o11,o12,o13,o14,o15,o16, v1,v2,v3,v4)
GLdouble objx
GLdouble objy
GLdouble objz
PPCODE:
{
GLdouble m[16], p[16], winx, winy, winz;
GLint v[4];
int i;
for (i=0;i<16;i++)
m[i] = SvNV(ST(i+3));
for (i=0;i<16;i++)
p[i] = SvNV(ST(i+3+16));
for (i=0;i<4;i++)
v[i] = SvIV(ST(i+3+16+16));
i = gluProject(objx, objy, objz, m, p, v, &winx, &winy, &winz);
if (i) {
EXTEND(sp, 3);
PUSHs(sv_2mortal(newSVnv(winx)));
PUSHs(sv_2mortal(newSVnv(winy)));
PUSHs(sv_2mortal(newSVnv(winz)));
}
}
#// gluPwlCurve_c(nurb, count, data, stride, type);
void
gluPwlCurve_c(nurb, count, data, stride, type)
GLUnurbsObj * nurb
GLint count
void * data
GLint stride
GLenum type
CODE:
gluPwlCurve(nurb, count, data, stride, type);
#// gluQuadricDrawStyle(quad, draw);
void
gluQuadricDrawStyle(quad, draw)
GLUquadricObj * quad
GLenum draw
#// gluQuadricNormals(quad, normal);
void
gluQuadricNormals(quad, normal)
GLUquadricObj * quad
GLenum normal
#// gluQuadricOrientation(quad, orientation);
void
gluQuadricOrientation(quad, orientation)
GLUquadricObj * quad
GLenum orientation
#// gluQuadricTexture(quad, texture);
void
gluQuadricTexture(quad, texture)
GLUquadricObj * quad
GLboolean texture
#//# gluScaleImage_s($format, $wIn, $hIn, $typeIn, (PACKED)dataIn, $wOut, $hOut, $typeOut, (PACKED)dataOut);
GLint
gluScaleImage_s(format, wIn, hIn, typeIn, dataIn, wOut, hOut, typeOut, dataOut)
GLenum format
GLsizei wIn
pogl_glu.xs view on Meta::CPAN
GLdouble y
GLdouble z
CODE:
{
int i;
int j = 3;
AV * vds = tess->vertex_datas;
int size = 3 + (tess->do_colors ? 4 : 0) + (tess->do_normals ? 3 : 0);
GLdouble* data = malloc(sizeof(GLdouble) * size);
if (!vds) croak("Missing vertex data storage during gluTessVertex");
if (data == NULL) croak("Couldn't allocate vertex during gluTessVertex");
data[0] = x;
data[1] = y;
data[2] = z;
av_push(vds, newSViv(PTR2IV(data))); /* store for freeing later */
if (tess->do_colors) {
int J = j + 4;
if (tess->do_normals) {
if (items != 12 && items != 11) croak("gluTessVertex_p(tess, x,y,z, r,g,b,a, nx,ny,nz [,polygon_data])");
} else {
if (items != 9 && items != 8 ) croak("gluTessVertex_p(tess, x,y,z, r,g,b,a [,polygon_data])");
}
for ( ; j < J; j++) data[j] = (GLdouble)SvNV(ST(j+1));
} else {
if (tess->do_normals) {
if (items != 8 && items != 7) croak("gluTessVertex_p(tess, x,y,z, nx,ny,nz [,polygon_data])");
} else {
if (items != 5 && items != 4) croak("gluTessVertex_p(tess, x,y,z [,polygon_data])");
}
}
if (tess->do_normals) {
int J = j + 3;
for ( ; j < J; j++) data[j] = (GLdouble)SvNV(ST(j+1));
}
if (tess->use_vertex_data) {
PGLUtess * opaque = malloc(sizeof(PGLUtess));
if (!opaque) croak("Couldn't allocate storage for vertex opaque data");
opaque->triangulator = tess->triangulator;
opaque->vertex_datas = tess->vertex_datas;
opaque->vertex_callback = tess->vertex_callback;
opaque->combine_callback = tess->combine_callback;
opaque->vertex_data = data;
opaque->polygon_data = (items > j+1) ? newSVsv(ST(j+1)) : 0;
opaque->use_vertex_data = TRUE;
opaque->do_colors = tess->do_colors;
opaque->do_normals = tess->do_normals;
if (! tess->tess_datas) tess->tess_datas = newAV();
av_push(tess->tess_datas, newSViv(PTR2IV(opaque)));
gluTessVertex(tess->triangulator, data, (void*)opaque);
} else {
gluTessVertex(tess->triangulator, data, data);
}
}
#//# gluUnProject_p($winx,$winy,$winz, @m4x4, @o4x4, $v1,$v2,$v3,$v4);
void
gluUnProject_p(winx,winy,winz, m1,m2,m3,m4,m5,m6,m7,m8,m9,m10,m11,m12,m13,m14,m15,m16, o1,o2,o3,o4,o5,o6,o7,o8,o9,o10,o11,o12,o13,o14,o15,o16, v1,v2,v3,v4)
GLdouble winx
GLdouble winy
GLdouble winz
PPCODE:
{
GLdouble m[16], p[16], objx, objy, objz;
GLint v[4];
int i;
for (i=0;i<16;i++)
m[i] = SvNV(ST(i+3));
for (i=0;i<16;i++)
p[i] = SvNV(ST(i+3+16));
for (i=0;i<4;i++)
v[i] = SvIV(ST(i+3+16+16));
i = gluUnProject(winx,winy,winz, m, p, v, &objx,&objy,&objz);
if (i) {
EXTEND(sp, 3);
PUSHs(sv_2mortal(newSVnv(objx)));
PUSHs(sv_2mortal(newSVnv(objy)));
PUSHs(sv_2mortal(newSVnv(objz)));
}
}
#endif
#endif /* End IN_POGL_GLU_XS */
( run in 0.850 second using v1.01-cache-2.11-cpan-71847e10f99 )