Hi, is this ready for Linux ? I tried loading NBOpenGL-X after but I got This package depends on the following classes: > NBXLibConstants > You must resolve these dependencies before you will be able to load these > definitions: > NBGLXContextDriver > supportsCurrentPlatform > createContext: >
Also, I remember in OpenCroquet Squeak could parse positional arguments of the form ogl glThis(x,y,x); glThat(x,y,z); -- doesn't it make sense to bring this back, since most of the OpenGL code examples on the internet are in this form ? On an unrelated note, I'm confused by this ConfigurationOf/Gofer/Montecello system. How do people new to Pharo find out what these URLs and special configuration loading code are ? Seems like everyone is just copying and pasting code from forums into workspaces. Couldn't these code fragments for loading configurations be loaded automatically via a URL or something ? On Fri, Feb 24, 2012 at 3:42 AM, Stéphane Ducasse <[email protected] > wrote: > > On Feb 22, 2012, at 11:22 PM, Lawson English wrote: > > > Thanks for that code, Stéphane. I'll work up a video tutorial on it once > Igor gets his next configuration* set. > > Excellent i was planning to do it but I'm flooded by work > What I want is that every single person with zero knowledge can do it by > following the videos. > So if you can do that this is great. > > Then I would like to have a 3 min videos showing live modification of > openGL objects on the fly. > You write in the browser and boom you see it on the screen. > > > > Here are my notes. > > > MCHttpRepository > location: 'http://www.squeaksource.com/NBOpenGL' > user: '' > password: '' > > ConfigurationOfNBOpenGL project lastVersion load > > > GLTTRenderingDemo new openInWorld > > GLViewportMorph subclass: #GLStef > instanceVariableNames: '' > classVariableNames: '' > poolDictionaries: '' > category: 'NBOpenGL-Stef' > > > GLStef new openInWorld > > render > > | gl | > self checkSession. > gl := display gl. > display clear: Color white. > > + refresh > > gluperspective glfrustum > > http://nehe.gamedev.net/article/replacement_for_gluperspective/21002/ > > perspectiveFovY: fovY aspect: aspect zNear: zNear zFar: zFar > "Replaces gluPerspective. Sets the frustum to perspective mode. > // fovY - Field of vision in degrees in the y direction > // aspect - Aspect ratio of the viewport > // zNear - The near clipping distance > // zFar - The far clipping distance > " > > > perspectiveFovY: fovY aspect: aspect zNear: zNear zFar: zFar > "Replaces gluPerspective. Sets the frustum to perspective mode. > // fovY - Field of vision in degrees in the y direction > // aspect - Aspect ratio of the viewport > // zNear - The near clipping distance > // zFar - The far clipping distance > " > | fW fH | > fH := (fovY / (360 * Float pi)) tan * zNear. > "fH = tan( fovY / 360 * pi ) * zNear;" > fW := fH * aspect. > display gl frustum_left: fW negated right: fW bottom: fH negated > top: fH zNear: zNear zFar: zFar > > > openGL cube tutorial > > > > http://nehe.gamedev.net/tutorial/3d_shapes/10035/ > > > > glMatrixMode(GL_PROJECTION); // Select > The Projection Matrix > glLoadIdentity(); // Reset > The Projection Matrix > > // Calculate The Aspect Ratio Of The Window > gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f); > > glMatrixMode(GL_MODELVIEW); // > Select The Modelview Matrix > glLoadIdentity(); > > > render > > | gl | > self checkSession. > gl := display gl. > display clear: Color white. > > gl matrixMode: GL_PROJECTION; > loadIdentity. > > self perspectiveFovY: 45.0 > aspect: (self width /self height) asFloat > zNear: 0.1 zFar: 100.0. > > gl matrixMode: GL_MODELVIEW. > gl loadIdentity. > > > > glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear > Screen And Depth Buffer > glLoadIdentity(); // Reset > The Current Modelview Matrix > glTranslatef(-1.5f,0.0f,-6.0f); // Move > Left 1.5 Units And Into The Screen 6.0 > glRotatef(rtri,0.0f,1.0f,0.0f); // Rotate > The Triangle On The Y axis ( NEW ) > glBegin(GL_TRIANGLES); // Start > Drawing A Triangle > glColor3f(1.0f,0.0f,0.0f); // Red > glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of > Triangle (Front) > glColor3f(0.0f,1.0f,0.0f); // Green > glVertex3f(-1.0f,-1.0f, 1.0f); // Left Of > Triangle (Front) > glColor3f(0.0f,0.0f,1.0f); // Blue > glVertex3f( 1.0f,-1.0f, 1.0f); // Right > Of Triangle (Front) > glColor3f(1.0f,0.0f,0.0f); // Red > glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of > Triangle (Right) > glColor3f(0.0f,0.0f,1.0f); // Blue > glVertex3f( 1.0f,-1.0f, 1.0f); // Left Of > Triangle (Right) > glColor3f(0.0f,1.0f,0.0f); // Green > glVertex3f( 1.0f,-1.0f, -1.0f); // Right > Of Triangle (Right) > glColor3f(1.0f,0.0f,0.0f); // Red > glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of > Triangle (Back) > glColor3f(0.0f,1.0f,0.0f); // Green > glVertex3f( 1.0f,-1.0f, -1.0f); // Left > Of Triangle (Back) > glColor3f(0.0f,0.0f,1.0f); // Blue > glVertex3f(-1.0f,-1.0f, -1.0f); // Right > Of Triangle (Back) > glColor3f(1.0f,0.0f,0.0f); // Red > glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of > Triangle (Left) > glColor3f(0.0f,0.0f,1.0f); // Blue > glVertex3f(-1.0f,-1.0f,-1.0f); // Left Of > Triangle (Left) > glColor3f(0.0f,1.0f,0.0f); // Green > glVertex3f(-1.0f,-1.0f, 1.0f); // Right > Of Triangle (Left) > glEnd(); // Done > Drawing The Pyramid > > glLoadIdentity(); // Reset > The Current Modelview Matrix > glTranslatef(1.5f,0.0f,-7.0f); // Move > Right 1.5 Units And Into The Screen 7.0 > glRotatef(rquad,1.0f,1.0f,1.0f); // Rotate The > Quad On The X axis ( NEW ) > glBegin(GL_QUADS); // Draw > A Quad > glColor3f(0.0f,1.0f,0.0f); // Set > The Color To Green > glVertex3f( 1.0f, 1.0f,-1.0f); // Top > Right Of The Quad (Top) > glVertex3f(-1.0f, 1.0f,-1.0f); // Top > Left Of The Quad (Top) > glVertex3f(-1.0f, 1.0f, 1.0f); // Bottom > Left Of The Quad (Top) > glVertex3f( 1.0f, 1.0f, 1.0f); // Bottom > Right Of The Quad (Top) > glColor3f(1.0f,0.5f,0.0f); // Set > The Color To Orange > glVertex3f( 1.0f,-1.0f, 1.0f); // Top > Right Of The Quad (Bottom) > glVertex3f(-1.0f,-1.0f, 1.0f); // Top > Left Of The Quad (Bottom) > glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom > Left Of The Quad (Bottom) > glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom > Right Of The Quad (Bottom) > glColor3f(1.0f,0.0f,0.0f); // Set > The Color To Red > glVertex3f( 1.0f, 1.0f, 1.0f); // Top > Right Of The Quad (Front) > glVertex3f(-1.0f, 1.0f, 1.0f); // Top > Left Of The Quad (Front) > glVertex3f(-1.0f,-1.0f, 1.0f); // Bottom > Left Of The Quad (Front) > glVertex3f( 1.0f,-1.0f, 1.0f); // Bottom > Right Of The Quad (Front) > glColor3f(1.0f,1.0f,0.0f); // Set > The Color To Yellow > glVertex3f( 1.0f,-1.0f,-1.0f); // Top > Right Of The Quad (Back) > glVertex3f(-1.0f,-1.0f,-1.0f); // Top > Left Of The Quad (Back) > glVertex3f(-1.0f, 1.0f,-1.0f); // Bottom > Left Of The Quad (Back) > glVertex3f( 1.0f, 1.0f,-1.0f); // Bottom > Right Of The Quad (Back) > glColor3f(0.0f,0.0f,1.0f); // Set > The Color To Blue > glVertex3f(-1.0f, 1.0f, 1.0f); // Top > Right Of The Quad (Left) > glVertex3f(-1.0f, 1.0f,-1.0f); // Top > Left Of The Quad (Left) > glVertex3f(-1.0f,-1.0f,-1.0f); // Bottom > Left Of The Quad (Left) > glVertex3f(-1.0f,-1.0f, 1.0f); // Bottom > Right Of The Quad (Left) > glColor3f(1.0f,0.0f,1.0f); // Set > The Color To Violet > glVertex3f( 1.0f, 1.0f,-1.0f); // Top > Right Of The Quad (Right) > glVertex3f( 1.0f, 1.0f, 1.0f); // Top > Left Of The Quad (Right) > glVertex3f( 1.0f,-1.0f, 1.0f); // Bottom > Left Of The Quad (Right) > glVertex3f( 1.0f,-1.0f,-1.0f); // Bottom > Right Of The Quad (Right) > glEnd(); // Done > Drawing The Quad > > rtri+=0.2f; // > Increase The Rotation Variable For The Triangle ( NEW ) > rquad-=0.15f; // > Decrease The Rotation Variable For The Quad ( NEW ) > return TRUE; // Keep > Going > > > > > > > L. > > > > On 2/22/12 2:11 PM, Stéphane Ducasse wrote: > >> Igor coded with me one hour to show me step by step how to produce a > rotating pyramid in Pharo :) > >> > >> Have fun (igor will update the configurationOfNBOpenGL to load the > latest file). > >> > >> > >> > > > > > > >
