OpenGL/Utah teapot: Difference between revisions

→‎{{header|Raku}}: fixed by using also libGL, just like the other opengl task
(added Raku programming solution)
(→‎{{header|Raku}}: fixed by using also libGL, just like the other opengl task)
Line 482:
 
use NativeCall;
 
constant $lib = 'glut';
 
my $rot = 0e0;
Line 496 ⟶ 494:
 
 
constant $lib = 'glut';
sub glutInit(CArray[uint32], CArray[Str]) is native($lib) {*};
sub glutInitDisplayMode(uint32 $mode) is native($lib) {*};
sub glutInitWindowSize(int32 $width, int32 $height) is native($lib) {*};
sub glutCreateWindow(Str $str) is native($lib) {*};
sub glClearColor(num32 $red, num32 $green, num32 $blue, num32 $alpha) is native($lib) {*};
sub glShadeModel(int32) is native($lib) {*};
sub glEnable(int32) is native($lib) {*};
sub glClear(int32) is native($lib) {*};
sub glutDisplayFunc(&func ()) is native($lib) {*};
sub glPushMatrix() is native($lib) {*};
sub glRotatef(num32 $angle, num32 $x, num32 $y, num32 $z) is native($lib) {*};
sub glutWireTeapot(num64 $size) is native($lib) {*};
sub glPopMatrix() is native($lib) {*};
sub glFlush() is native($lib) {*};
sub glutIdleFunc(&func ()) is native($lib) {*};
sub glutPostRedisplay() is native($lib) {*};
sub glutMainLoop() is native($lib) {*};
 
 
# Pitifully couldn't get the 'pointer to array' to work properly so omitted
constant $gllib = 'GL';
sub glLightfv (int32, int32, Pointer[CArray[num32]] is rw) is native($lib) {*};
sub glMaterialfvglClearColor(int32num32 $red, int32num32 $green, Pointer[CArray[num32]] is$blue, rwnum32 $alpha) is native($libgllib) {*};
sub glShadeModel(int32) is native($libgllib) {*};
sub glEnable(int32) is native($libgllib) {*};
sub glClear(int32) is native($libgllib) {*};
sub glClearColorglRotatef(num32 $redangle, num32 $greenx, num32 $bluey, num32 $alphaz) is native($libgllib) {*};
sub glPushMatrix() is native($libgllib) {*};
sub glPopMatrix() is native($libgllib) {*};
sub glFlush() is native($libgllib) {*};
sub glLightfv (int32, int32, Pointer[CArray[num32]] is rw) is native($libgllib) {*};
sub glMaterialfv(int32, int32, CArray[num32]) is native($gllib) {*};
 
 
Line 522:
glClearColor(.5e0,.5e0,.5e0,0e0);
glShadeModel(GL_SMOOTH);
glLightfv(GL_LIGHT0,GL_AMBIENT,CArray[num32].new: 1e0,1e0,1e0,0e0); # white
glLightfv(GL_LIGHT0,GL_DIFFUSE,CArray[num32].new: 1e0,1e0,1e0,0e0); # white
glMaterialfv(GL_FRONT,GL_SHININESS,CArray[num32].new: 70e0); # skinless so no effect ?
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
Line 532 ⟶ 535:
glRotatef(30e0,1e0,1e0,0e0);
glRotatef($rot,0e0,1e0,1e0);
glMaterialfv(GL_FRONT,GL_DIFFUSE, CArray[num32].new: 0e0,1e0,0e0,0e0); # green
glutWireTeapot(.5e0);
glPopMatrix();
Line 553 ⟶ 557:
</lang>
 
Output: [https://drive.google.com/file/d/1WMyxdjDT1XdLJhCRZ79cwDBPD7XDoRFeNFKc94-EV1UqZ-LF2O2xymXXpI-fGykp/view (Offsite Media file) ]
351

edits