Hi, quick answer: almost, probably tomorrow.

long answer: I have the changes on NBOpenGL-X needed to make it work on
Linux in my image, but they are quite a few and I have to dedicate some
time to upload them. Tomorrow I'll try to commit to the ss repo. Before
loading NBOpenGL-X you have to load NBXLib package, which lives in
www.squeaksource.com/NBXLib, and contains the wrappers for XLib which is
needed by glX. And I also have to commit changes there too. Maybe I can
even try to write a configuration to load it, but I have to learn of
metacello first.

On Thu, Feb 23, 2012 at 8:15 PM, chadwick <[email protected]> wrote:

> 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 ?


Yes, I look at the code needed to load the package I want on the mailing
list or the pharo book, paste it in a workspace and doit. It's a
bit embarrassing but that's what we've got for now, I hope in the future
we'll have an UI that let people browse packages and install them by
clicking a button.


>
>
> 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).
>> >>
>> >>
>> >>
>> >
>> >
>>
>>
>>
>


-- 
Lic. Javier Pimás
Ciudad de Buenos Aires

Reply via email to