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 <stephane.ducasse@inria.fr> 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).
>>
>>
>>
>
>