Re: OpenGl.l and Segmentation fault
Hi Jon, > This is how it was done in simul/gl/glut.c, which worked with > (32-bit) picoLisp-2.3.5: > ... > void* font = GLUT_STROKE_ROMAN; > ... > int character; > ... > glutStrokeCharacter(font, character); Yes. The only difference is that glutStrokeCharacter() expects a pointer and an integer, while 'native' will pass two long integers. This shouldn't make any difference, though, especially not on 64-bit systems (where all three types have a size of 64 bits), and not when arguments are passed in registers anyway. Where is the hitch? -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe
Re: OpenGl.l and Segmentation fault
Hi all, This is how it was done in simul/gl/glut.c, which worked with (32-bit) picoLisp-2.3.5: // (glut:BitmapCharacter 'fontNum 'character) -> T any BitmapCharacter(any ex) { void* font; int fontNum; int character; fontNum = (int)evCnt(ex, cdr(ex)); character = (int)evCnt(ex, cddr(ex)); switch (fontNum) { // These GLUT_BITMAP values are system dependent. case 2: font = GLUT_BITMAP_9_BY_15;break; case 3: font = GLUT_BITMAP_8_BY_13;break; case 4: font = GLUT_BITMAP_TIMES_ROMAN_10;break; case 5: font = GLUT_BITMAP_TIMES_ROMAN_24;break; case 6: font = GLUT_BITMAP_HELVETICA_10;break; case 7: font = GLUT_BITMAP_HELVETICA_12;break; case 8: font = GLUT_BITMAP_HELVETICA_18;break; default: font = GLUT_BITMAP_TIMES_ROMAN_24;break; } //printf("BitmapCharacter, font = %10p\n", font); glutBitmapCharacter(font, character); return T; } // (glut:StrokeCharacter 'mono 'character) -> T any StrokeCharacter(any ex) { void* font = GLUT_STROKE_ROMAN; int mono; int character; mono = (int)evCnt(ex, cdr(ex));// correct? - jk character = (int)evCnt(ex, cddr(ex)); if (mono) font = GLUT_STROKE_MONO_ROMAN; glutStrokeCharacter(font, character); return T; } .. and this is how it was called in my china.l: (glut:BitmapCharacter FontNum (char Chr)) I know that parameters in calls to C library functions are done quite differently nowadays, in pil64. /Jon On 11/8/12 9:43 PM, Jorge Acereda wrote: On Nov 8, 2012, at 9:09 PM, Alexander Burger wrote: Hi Jon, work to make OpenGl.l a little more complete (lots missing). The problem I have right now, is with glutBitmapCharacter and glutStrokeCharacter; they give me "Segmentation fault", and I suspect they'll fail on Linux as well. Yes. At least 'glutStrokeCharacter' does. I'm wondering whether (or why) (glutStrokeCharacter 2 (char "A")) is correct, as the corresponding C function signature is void glutStrokeCharacter(void *font, int character); i.e. '2' is a "pointer". #if defined(_WIN32) /* Stroke font constants (use these in GLUT program). */ #define GLUT_STROKE_ROMAN ((void*)0) #define GLUT_STROKE_MONO_ROMAN ((void*)1) .. #else .. #define GLUT_STROKE_ROMAN (&glutStrokeRoman) #define GLUT_STROKE_MONO_ROMAN (&glutStrokeMonoRoman) .. #endif I faintly remember I saw this usage before (perhaps in your OpenGl / ErsatzLisp code?), and it seems passing '2' as a pointer is legal use. But then I have no idea why it crashes. Cheers, - Alex -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe
Re: OpenGl.l and Segmentation fault
On Nov 8, 2012, at 9:09 PM, Alexander Burger wrote: > Hi Jon, > >> work to make OpenGl.l a little more complete (lots missing). The problem >> I have right now, is with glutBitmapCharacter and glutStrokeCharacter; >> they give me "Segmentation fault", and I suspect they'll fail on Linux >> as well. > > Yes. At least 'glutStrokeCharacter' does. > > > I'm wondering whether (or why) > >(glutStrokeCharacter 2 (char "A")) > > is correct, as the corresponding C function signature is > > void glutStrokeCharacter(void *font, int character); > > i.e. '2' is a "pointer". #if defined(_WIN32) /* Stroke font constants (use these in GLUT program). */ #define GLUT_STROKE_ROMAN ((void*)0) #define GLUT_STROKE_MONO_ROMAN ((void*)1) .. #else .. #define GLUT_STROKE_ROMAN (&glutStrokeRoman) #define GLUT_STROKE_MONO_ROMAN (&glutStrokeMonoRoman) .. #endif > > > I faintly remember I saw this usage before (perhaps in your OpenGl / > ErsatzLisp code?), and it seems passing '2' as a pointer is legal use. > But then I have no idea why it crashes. > > Cheers, > - Alex > -- > UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe
Re: OpenGl.l and Segmentation fault
Hi Jon, > work to make OpenGl.l a little more complete (lots missing). The problem > I have right now, is with glutBitmapCharacter and glutStrokeCharacter; > they give me "Segmentation fault", and I suspect they'll fail on Linux > as well. Yes. At least 'glutStrokeCharacter' does. I'm wondering whether (or why) (glutStrokeCharacter 2 (char "A")) is correct, as the corresponding C function signature is void glutStrokeCharacter(void *font, int character); i.e. '2' is a "pointer". I faintly remember I saw this usage before (perhaps in your OpenGl / ErsatzLisp code?), and it seems passing '2' as a pointer is legal use. But then I have no idea why it crashes. Cheers, - Alex -- UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe
OpenGl.l and Segmentation fault
Hi, Since I can now run OpenGL stuff using emu64 on Mac, I can continue some work to make OpenGl.l a little more complete (lots missing). The problem I have right now, is with glutBitmapCharacter and glutStrokeCharacter; they give me "Segmentation fault", and I suspect they'll fail on Linux as well. If you use my "extended" OpenGl.l (goes into lib/), attached, and try the code below, you'll see the problem. This requires emu64 or pil64. /Jon # 18sep07abu, 07nov12jk # (c) Software Lab. Alexander Burger (load "@lib/openGl.l") (glutInit) (glutInitDisplayMode (| GLUT_SINGLE GLUT_RGB)) (glutInitWindowSize 400 400) (glutCreateWindow "Test Window") (glClearColor 0.5 0.5 0.5 0.0) (glMatrixMode GL_PROJECTION) (glLoadIdentity) (glOrtho 0.0 1.0 0.0 1.0 -1.0 1.0) (setq *M 0) (setq *CL '((1.0 0.5 0.5) (0 1.0 0) (0 0 1.0) (0.8 0.8 0.2))) (displayPrg (glClear GL_COLOR_BUFFER_BIT) (glColor3f (caar *CL) (cadar *CL) (caddr (car *CL))) (glBegin GL_POLYGON) (glVertex3f 0.25 0.25 0.0) (glVertex3f 0.75 0.25 0.0) (glVertex3f 0.75 0.75 0.0) (glVertex3f 0.25 0.75 0.0) (glEnd) (glRasterPos2f 0 0) # http://www.opengl.org/resources/libraries/glut/spec3/node76.html (glutBitmapCharacter 2 (char "A")) # http://www.opengl.org/resources/libraries/glut/spec3/node78.html #(glutStrokeCharacter 2 (char "A")) (glFlush) ) (mouseFunc '((Btn State X Y) (rot *CL) (println "mouseFunc" (inc '*M)) (glutPostRedisplay) ) ) (glutMainLoop) # vi:et:ts=3:sw=3 --090904040509000408010403 Content-Type: application/zip; name="openGl.l.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="openGl.l.zip" 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 duupNyxHn7v581t2ZRVlCUY