Hi Alex, i'm sad to hear that AlienOpenGL is not working for you, i'm currently not mainting it. IMO opinion the Croquet OpengL and Igor's native boost OpenGL are far better choices for interfacing with OpenGL. Lumiere is conceptually designed to work with any of the above, but currently tied to AlienOpenGL. Wouldn't take much to plug the other two, and you would get the high level abstractions over OpenGL that Lumiere offers. Regarding the boost, it highly depends on the 3D application being built. http://www.opengl.org/resources/code/samples/advanced/advanced97/notes/node2... Anyway, Croquet OpenGL does the computation on Smalltalk, (but i think FloatArray is using a plugin).With Lumiere i left the matrix calculations to OpenGL, but you get less functionality. The boost comes not from the matrix calculations but because of the efficient rendering engine (parallel pipelines) implemented in low level language, as opposed doing everything in Smalltalk. Again, this depends on the 3D application being built. Regarding the tool that you mentioned, how do you simulate 3D, in the 2D Morphic framework? I'm finding hard to understand how can you achieve a Morphic cube. Saludos, Fernando On Tue, Mar 15, 2011 at 7:29 PM, Alexandre Bergel <alexandre.bergel@me.com> wrote:
Great. Â What about the usual "native code" speed boost? Â Are you writing a plugin, or is it all Smalltalk code?
It is all Smalltalk code. We are not against native libraries, however we could not make it run. And so, after several months of intensive tries. So, in order to make some progress, we coded a 3d engine in Smalltalk. Actually, this is not difficult (for basic functionalities such as light, cubes, camera -- no texture and complex light rendering). I did a 2d engine for Mondrian. So having a 3d engine should not be that hard (actually it is not). The nice advantage, that it should work on the ipad, iphone, web, ...
Other things, I would be surprise to have a significant boost by using OpenGL for rendering objects if all the matrix computations are realized in Smalltalk. Anyone can comment on it?
Cheers, Alexandre
________________________________________ From: pharo-project-bounces@lists.gforge.inria.fr [pharo-project-bounces@lists.gforge.inria.fr] On Behalf Of Ricardo Jacas [ricardo.jacas@gmail.com] Sent: Tuesday, March 15, 2011 11:07 AM To: Pharo-project@lists.gforge.inria.fr Subject: Re: [Pharo-project] Lumiere on Linux?
Hi guys, as Alex said we are currently working on a quite simple 3d library entirely based on Morph. Right know there is only cubes and "3d lines" to play as we please, i will add some screenshots as soon as i have some spare time :)
2011/3/13 Schwab,Wilhelm K <bschwab@anest.ufl.edu>:
Using libGL.so.1 gives similar results :(
________________________________________ From: pharo-project-bounces@lists.gforge.inria.fr [pharo-project-bounces@lists.gforge.inria.fr] On Behalf Of Lemuus [lemuus@gmail.com] Sent: Saturday, March 12, 2011 9:48 PM To: Pharo-project@lists.gforge.inria.fr Subject: Re: [Pharo-project] Lumiere on Linux?
I think that the correct choice is libGL.so,but I'm just guessing.
On Sat, Mar 12, 2011 at 9:43 PM, Schwab,Wilhelm K <bschwab@anest.ufl.edu<mailto:bschwab@anest.ufl.edu>> wrote: I tried the 1.2 one-click with Lumiere. Â Following the collaboractive book,
Gofer it    squeaksource: 'Lumiere';    package: 'ConfigurationOfLumiere';    load.    ( Smalltalk globals classNamed:'ConfigurationOfLumiere' ) perform: #loadDefault.
led to a warning about DisplayList(??), but seemed to work otherwise. Â Trying an example such as #testRenderingSphere gave an error trying open OpenGL.framework, which I had trouble finding on Linux. Â Changing AlienOpenGLLibrary>>libraryName to answer 'libglut.so.3' gets it to the point of a segment fault, shown below. Â Is glut the correct choice, or do I need to get or specify some other library?
Bill
Segmentation fault
Smalltalk stack dump: 0xbfd1714c I AlienOpenGLLibrary>glMatrixMode: 2033044028: a(n) AlienOpenGLLibrary 0xbfd17170 M [] in AlienOpenGLLibraryExamples>testRenderingSphere 2033042940: a(n) AlienOpenGLLibraryExamples 0xbfd17190 M BlockClosure>ensure: 2033043980: a(n) BlockClosure 0xbfd171b4 M AlienOpenGLLibraryExamples>testRenderingSphere 2033042940: a(n) AlienOpenGLLibraryExamples 0xbfd171d4 I AlienOpenGLLibraryExamples class>run: 2024758496: a(n) AlienOpenGLLibraryExamples class 0xbfd171f0 M AlienOpenGLLibraryExamples class>? 2024758496: a(n) AlienOpenGLLibraryExamples class 0xbfd17228 I Compiler>evaluate:in:to:notifying:ifFail:logged: 2032491124: a(n) Compiler 0xbfd17268 I [] in OBTextMorphEditorWithShout(SmalltalkEditor)>evaluateSelection 2025101912: a(n) OBTextMorphEditorWithShout 0xbfd17284 M BlockClosure>on:do: 2032491080: a(n) BlockClosure 0xbfd172b8 I OBTextMorphEditorWithShout(SmalltalkEditor)>evaluateSelection 2025101912: a(n) OBTextMorphEditorWithShout 0xbfd172d0 M [] in OBPluggableTextMorphWithShout(PluggableTextMorph)>doIt 2024962936: a(n) OBPluggableTextMorphWithShout 0xbfd172f8 I [] in OBPluggableTextMorphWithShout(PluggableTextMorph)>handleEdit: 2024962936: a(n) OBPluggableTextMorphWithShout 0xbfd17318 I OBTextMorphWithShout(TextMorph)>handleEdit: 2024964024: a(n) OBTextMorphWithShout 0xbfd17340 I OBPluggableTextMorphWithShout(PluggableTextMorph)>handleEdit: 2024962936: a(n) OBPluggableTextMorphWithShout 0xbfd1735c M OBPluggableTextMorphWithShout(PluggableTextMorph)>doIt 2024962936: a(n) OBPluggableTextMorphWithShout 0xbfd17378 M OBDefinitionPanel(OBTextPanel)>perform:orSendTo: 2024940940: a(n) OBDefinitionPanel 0xbfd173a8 I [] in ToggleMenuItemMorph(MenuItemMorph)>invokeWithEvent: 2031928172: a(n) ToggleMenuItemMorph 0xbfd173c8 M BlockClosure>ensure: 2032477540: a(n) BlockClosure 0xbfd173f0 I CursorWithMask(Cursor)>showWhile: 2002515888: a(n) CursorWithMask 0xbfd17418 I ToggleMenuItemMorph(MenuItemMorph)>invokeWithEvent: 2031928172: a(n) ToggleMenuItemMorph 0xbfd1743c I ToggleMenuItemMorph(MenuItemMorph)>mouseUp: 2031928172: a(n) ToggleMenuItemMorph 0xbfd17458 M ToggleMenuItemMorph(MenuItemMorph)>handleMouseUp: 2031928172: a(n) ToggleMenuItemMorph 0xbfd17474 M MouseButtonEvent>sentTo: 2032130572: a(n) MouseButtonEvent 0xbfd17490 M ToggleMenuItemMorph(Morph)>handleEvent: 2031928172: a(n) ToggleMenuItemMorph 0xbfd174c0 M MorphicEventDispatcher>dispatchDefault:with: 2032130556: a(n) MorphicEventDispatcher 0xbfd174e0 M MorphicEventDispatcher>dispatchEvent:with: 2032130556: a(n) MorphicEventDispatcher 0xbfd17500 M ToggleMenuItemMorph(Morph)>processEvent:using: 2031928172: a(n) ToggleMenuItemMorph 0xbfd17534 M MorphicEventDispatcher>dispatchDefault:with: 2032130556: a(n) MorphicEventDispatcher 0xbfd17554 M MorphicEventDispatcher>dispatchEvent:with: 2032130556: a(n) MorphicEventDispatcher 0xbfd17574 M MenuMorph(Morph)>processEvent:using: 2031927856: a(n) MenuMorph 0xbfd17594 M MenuMorph(Morph)>processEvent: 2031927856: a(n) MenuMorph 0xbfd175b0 M MenuMorph>handleFocusEvent: 2031927856: a(n) MenuMorph 0xbfd175d8 M [] in HandMorph>sendFocusEvent:to:clear: 2002449320: a(n) HandMorph 0xbfd175f4 M [] in PasteUpMorph>becomeActiveDuring: 2003523448: a(n) PasteUpMorph 0xbfd17610 M BlockClosure>on:do: 2032130460: a(n) BlockClosure 0xbfd1763c M PasteUpMorph>becomeActiveDuring: 2003523448: a(n) PasteUpMorph 0xbfd17660 M HandMorph>sendFocusEvent:to:clear: 2002449320: a(n) HandMorph 0xbfd17688 M HandMorph>sendEvent:focus:clear: 2002449320: a(n) HandMorph 0xbfd176ac M HandMorph>sendMouseEvent: 2002449320: a(n) HandMorph 0xbfd176d0 M HandMorph>handleEvent: 2002449320: a(n) HandMorph 0xbfd176fc M HandMorph>processEvents 2002449320: a(n) HandMorph 0xbfd17714 M [] in WorldState>doOneCycleNowFor: 2004924588: a(n) WorldState 0xbfd17738 M Array(SequenceableCollection)>do: 2001081712: a(n) Array 0xbfd17754 M WorldState>handsDo: 2004924588: a(n) WorldState 0xbfd17770 M WorldState>doOneCycleNowFor: 2004924588: a(n) WorldState 0xbfd1778c M WorldState>doOneCycleFor: 2004924588: a(n) WorldState 0xbfd101bc M WorldState>doOneSubCycleFor: 2004924588: a(n) WorldState 0xbfd101d8 M PasteUpMorph>doOneSubCycle 2003523448: a(n) PasteUpMorph 0xbfd10200 I MenuMorph>invokeModalAt:in:allowKeyboard: 2031927856: a(n) MenuMorph 0xbfd1022c I MenuMorph>invokeModal: 2031927856: a(n) MenuMorph 0xbfd10250 I MenuMorph>invokeModal 2031927856: a(n) MenuMorph 0xbfd10274 I OBPluggableTextMorphWithShout(PluggableTextMorph)>yellowButtonActivity: 2024962936: a(n) OBPluggableTextMorphWithShout 0xbfd10298 I OBTextMorphWithShout(TextMorphForEditView)>mouseDown: 2024964024: a(n) OBTextMorphWithShout 0xbfd102b4 M OBTextMorphWithShout(Morph)>handleMouseDown: 2024964024: a(n) OBTextMorphWithShout 0xbfd102d0 M MouseButtonEvent>sentTo: 2031927788: a(n) MouseButtonEvent 0xbfd102ec M OBTextMorphWithShout(Morph)>handleEvent: 2024964024: a(n) OBTextMorphWithShout 0xbfd10328 M MorphicEventDispatcher>dispatchMouseDown:with: 2031927596: a(n) MorphicEventDispatcher 0xbfd10348 M MorphicEventDispatcher>dispatchEvent:with: 2031927596: a(n) MorphicEventDispatcher 0xbfd10368 M OBTextMorphWithShout(Morph)>processEvent:using: 2024964024: a(n) OBTextMorphWithShout 0xbfd103a8 M MorphicEventDispatcher>dispatchMouseDown:with: 2031927596: a(n) MorphicEventDispatcher 0xbfd103c8 M MorphicEventDispatcher>dispatchEvent:with: 2031927596: a(n) MorphicEventDispatcher 0xbfd103e8 M TransformMorph(Morph)>processEvent:using: 2024963800: a(n) TransformMorph 0xbfd10428 M MorphicEventDispatcher>dispatchMouseDown:with: 2031927596: a(n) MorphicEventDispatcher 0xbfd10448 M MorphicEventDispatcher>dispatchEvent:with: 2031927596: a(n) MorphicEventDispatcher 0xbfd10468 M OBPluggableTextMorphWithShout(Morph)>processEvent:using: 2024962936: a(n) OBPluggableTextMorphWithShout 0xbfd104a8 M MorphicEventDispatcher>dispatchMouseDown:with: 2031927596: a(n) MorphicEventDispatcher 0xbfd104c8 M MorphicEventDispatcher>dispatchEvent:with: 2031927596: a(n) MorphicEventDispatcher 0xbfd104e8 M OBGroupingMorph(Morph)>processEvent:using: 2024957608: a(n) OBGroupingMorph 0xbfd10528 M MorphicEventDispatcher>dispatchMouseDown:with: 2031927596: a(n) MorphicEventDispatcher 0xbfd10548 M MorphicEventDispatcher>dispatchEvent:with: 2031927596: a(n) MorphicEventDispatcher 0xbfd10568 M OBSystemWindow(Morph)>processEvent:using: 2024944124: a(n) OBSystemWindow 0xbfd105a8 M MorphicEventDispatcher>dispatchMouseDown:with: 2031927596: a(n) MorphicEventDispatcher 0xbfd105c8 M MorphicEventDispatcher>dispatchEvent:with: 2031927596: a(n) MorphicEventDispatcher 0xbfd105e8 M PasteUpMorph(Morph)>processEvent:using: 2003523448: a(n) PasteUpMorph 0xbfd10610 M PasteUpMorph>processEvent:using: 2003523448: a(n) PasteUpMorph 0xbfd10630 M PasteUpMorph(Morph)>processEvent: 2003523448: a(n) PasteUpMorph 0xbfd10650 M HandMorph>sendEvent:focus:clear: 2002449320: a(n) HandMorph 0xbfd10674 M HandMorph>sendMouseEvent: 2002449320: a(n) HandMorph 0xbfd10698 M HandMorph>handleEvent: 2002449320: a(n) HandMorph 0xbfd106c4 M HandMorph>processEvents 2002449320: a(n) HandMorph 0xbfd106dc M [] in WorldState>doOneCycleNowFor: 2004924588: a(n) WorldState 0xbfd10700 M Array(SequenceableCollection)>do: 2001081712: a(n) Array 0xbfd1071c M WorldState>handsDo: 2004924588: a(n) WorldState 0xbfd10738 M WorldState>doOneCycleNowFor: 2004924588: a(n) WorldState 0xbfd10754 M WorldState>doOneCycleFor: 2004924588: a(n) WorldState 0xbfd10770 M PasteUpMorph>doOneCycle 2003523448: a(n) PasteUpMorph 0xbfd10790 I [] in Project class>spawnNewProcess 2004397340: a(n) Project class 2025126836 s [] in BlockClosure>newProcess
Most recent primitives at:put: basicNew at:put: basicNew at:put: basicNew at:put: basicNew at:put: basicNew at:put: basicNew at:put: basicNew at:put: basicNew at:put: basicNew at:put: basicNew at:put: basicNew at:put: basicNew at:put: basicNew new: at:put: at:put: value:value: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: basicNew at:put: at:put: at:put: at:put: basicNew: at:put: at:put: basicNew: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: species new: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: species new: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: basicNew: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: basicNew: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: at:put: new value:value: value:value: basicNew size basicNew byteAt:put: byteAt:put: bitXor: size species basicNew: replaceFrom:to:with:startingAt: basicNew: replaceFrom:to:with:startingAt: replaceFrom:to:with:startingAt: basicNew: basicNew at:put: species basicNew: replaceFrom:to:with:startingAt: replaceFrom:to:with:startingAt: size at:put: species basicNew: replaceFrom:to:with:startingAt: size size size perform:withArguments: perform:withArguments: species basicNew new: value: perform:withArguments: at:put: perform:withArguments: species new: species new: species new: replaceFrom:to:with:startingAt: newMethod:header: at:put: at:put: at:put: objectAt:put: objectAt:put: objectAt:put: objectAt:put: basicNew size objectAt: basicNew objectAt: at:put: at:put: at:put: at:put: value objectAt: size objectAt: objectAt: objectAt: objectAt: objectAt: objectAt:put: objectAt: objectAt:put: withArgs:executeMethod: basicNew perform: basicNew @ basicNew primCreateRenderer:x:y:w:h: millisecondClockValue signal primSignal:atMilliseconds: millisecondClockValue wait primGetNextEvent: millisecondClockValue wait signal millisecondClockValue primSignal:atMilliseconds: millisecondClockValue wait signal wait at:put: primRender:getProperty: basicNew primLoadLibrary: basicNew: sizeFieldPut: unsignedLongAt:put: basicNew new: value value basicNew: sizeFieldPut: unsignedLongAt:put: basicNew at:put: primFindSymbol: basicNew: sizeFieldPut: addressFieldPut: primFFICallResult:with: Aborted
-- lets reign all together
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel  http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.