Page 1 of 2 12 LastLast
Results 1 to 10 of 33

Thread: Asphyre Sphinx 3.0.0 has been released.

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Quote Originally Posted by azrael11 View Post
    Lifepower as you say Freepascal/Lazarus you mean 32/64 Windows 32/64 Linux and MacOsX.... ?
    Yes. Examples on Windows have been precompiled in 32-bit, but on Linux they have been precompiled in 64-bit.

    Linux support relies on TOpenGLControl from Lazarus components for creating GLX context. This means that multisampling settings don't work there yet and there could be some key weirdness when using GUI interfaces. The problem was that I couldn't find a way to extract X-window ID from Lazarus window handle to use proper GLX device. If someone knows how to do that, I can implement direct OpenGL context creation in native fashion.

  2. #2
    The problem was that I couldn't find a way to extract X-window ID from Lazarus window handle to use proper GLX device. If someone knows how to do that, I can implement direct OpenGL context creation in native fashion.
    For ZenGL I use this solution(but works only with GTK version of LCL, I didn't try to use Qt version of Lazarus, so ):
    Code:
    uses
      {$IFDEF LINUX}
      {$IFDEF LCLGTK}
      GLib, GTK, GDK,
      {$ENDIF}
      {$IFDEF LCLGTK2}
      GLib2, GTK2, GDK2, GDK2x,
      {$ENDIF}
      {$ENDIF}
    
    // ..
    
    {$IFDEF LINUX}
    var
      widget : PGtkWidget;
      socket : PGtkWidget;
      glist : PGlist;
    {$ENDIF}
    begin
      {$IFDEF LINUX}
      glist := gtk_container_children( GTK_CONTAINER( PGtkWidget( Panel1.Handle ) ) );
      widget := PGtkWidget( glist.data );
      socket := gtk_socket_new();
      gtk_container_add( GTK_CONTAINER( widget ), socket );
    
      gtk_widget_show( socket );
      gtk_widget_show( widget );
    
      gtk_widget_realize( socket );
      {$IFDEF LCLGTK}
      YourTWindow := PGdkWindowPrivate( widget.window ).xwindow;
      {$ENDIF}
      {$IFDEF LCLGTK2}
      YourTWindow := GDK_WINDOW_XID( widget.window );
      {$ENDIF}
      {$ENDIF}
    Last edited by Andru; 29-08-2012 at 02:55 PM.

  3. #3
    Andru, thanks a lot for this! I'm going to try using it.

  4. #4
    So far GNU/Linux version works fine But demos can't be compiled out of the box. First of all - path like /Develop/Asphyre... are you serious? GNU/Linux is not a MacOS X Better to use relative paths, or ask programmers to move Asphyre source code into home directory and use paths like $Env(HOME)/Asphyre, where is $Env(HOME) is a standard macros supported by Lazarus. Also I didn't notice dependency to LazOpenGLContext package(adding it manually solves the problem), which is needed for compilation.

  5. #5
    Quote Originally Posted by Andru View Post
    First of all - path like /Develop/Asphyre... are you serious? GNU/Linux is not a MacOS X Better to use relative paths, or ask programmers to move Asphyre source code into home directory and use paths like $Env(HOME)/Asphyre, where is $Env(HOME) is a standard macros supported by Lazarus.
    Regarding that specific path: it's just a path, which you can always change. There is also no pleasing everyone as one way or another people will have to change paths to accommodate for their environment. If you use relative paths, and then move example application to a different folder, the parental structure will change and path won't work. If you set for home folder, and move application to somewhere else, the path won't work.

    Therefore, "/Develop/Asphyre" was chosen as a supposedly intuitive illustration referring to Asphyre installation path, which most likely will be changed. Besides, if you use "Basic" as a startup sheet, you'll most likely put it anywhere you like, so you may end up using absolute paths after all.

    Quote Originally Posted by Andru View Post
    Also I didn't notice dependency to LazOpenGLContext package(adding it manually solves the problem), which is needed for compilation.
    Your code worked and native Linux provider is now complete! Therefore, I'm going to ditch LGLProvider and dependency on Lazarus TOpenGLContext. It looks like an update to Asphyre Sphinx 3 will follow soon.

  6. #6
    There is also no pleasing everyone as one way or another people will have to change paths to accommodate for their environment. If you use relative paths, and then move example application to a different folder, the parental structure will change and path won't work. If you set for home folder, and move application to somewhere else, the path won't work.
    When I download some SDK/etc., I'm waiting that it will work and compile out of the box, and Asphyre is not. That is why I wrote about relative paths, because it will work at least for standard demos after unpacking the archive(but maybe this is your plan - make a bit higher barrier to entry for developers, and "cut off" too lazy people ). What about using the home directory - it will also work until Asphyre source code will be "installed" into it(I know two types of SDK - just an archive, and something installable ), but this is not an option for standard demos without description somewhere.

  7. #7
    Quote Originally Posted by Lifepower View Post
    Yes. Examples on Windows have been precompiled in 32-bit, but on Linux they have been precompiled in 64-bit.

    Linux support relies on TOpenGLControl from Lazarus components for creating GLX context. This means that multisampling settings don't work there yet and there could be some key weirdness when using GUI interfaces. The problem was that I couldn't find a way to extract X-window ID from Lazarus window handle to use proper GLX device. If someone knows how to do that, I can implement direct OpenGL context creation in native fashion.
    Lifepower the windows isn't compiling with 32 bit ... the builds is 64 bit...

  8. #8
    Quote Originally Posted by azrael11 View Post
    Lifepower the windows isn't compiling with 32 bit ... the builds is 64 bit...
    You are right, sorry. There are 5 different example sets, 3 for Lazarus on all three platforms and 2 for Delphi. Delphi executables are 32-bit, Lazarus executables are 64-bit except those on Mac OS X. I've updated examples to use relative paths in the trunk, along with some other features. An update will be released soon.

  9. #9
    Is it intended that Asphyre is under MPL license?

    http://www.mozilla.org/MPL/2.0/
    If You distribute Covered Software in Executable Form then:

    such Covered Software must also be made available in Source Code Form, as described in Section 3.1, and You must inform recipients of the Executable Form how they can obtain a copy of such Source Code Form by reasonable means in a timely manner, at a charge no more than the cost of distribution to the recipient; and...
    I mean, i went with MIT license for nxPascal to give permission for game programmers to make also commercial projects.

    It's parts like this in source code that i dislike:
    Code:
    // If you modify/use this code or one of its parts either in original or
    // modified form, you must comply with Mozilla Public License v1.1,
    // specifically section 3, "Distribution Obligations". Failure to do so will
    // result in the license breach, which will be resolved in the court.
    It doesn't sound like fully open source, even though you do must retain rights for your source.

    Can i copy parts of it to nxPascal or not i wonder. Wouldn't want to reinvent the wheel.
    Last edited by User137; 30-08-2012 at 04:18 PM.

  10. #10
    Quote Originally Posted by User137 View Post
    Is it intended that Asphyre is under MPL license?
    Yes, under MPL 1.1 license. I don't see why can't you distribute commercial projects, as long as you provide full credits and mention location to original Asphyre framework. You need to provide source code only for any derivative works. It seems that MPL 2.0 is more enforced in this terms, but you can choose whether to stick with MPL 1.1 or with MPL 2.0.

    Quote Originally Posted by User137 View Post
    It doesn't sound like fully open source, even though you do must retain rights for your source.
    MPL is an open-source license. Asphyre framework, its tools and all related content are copyright protected. It is not, however, available for public domain, as it does have intellectual property rights, which must be not be violated.

    In any case, it is not unreasonable, assuming that you get a free and polished product, which you can use to create commercial projects, and the only thing you need to give in return is to provide credits for the framework and its author(s).

    In my understanding, MIT license only protects itself but not the actual author: MIT license and its statement propagates easily, while author rights are eventually dissolved. I think it is most applicable to software that is intended to be illegal or violate some laws, so it is easily distributed yet remain more or less anonymous. One such example would be a P2P content sharing tool. I wouldn't recommend it for nxPascal project.

    Quote Originally Posted by User137 View Post
    Can i copy parts of it to nxPascal or not i wonder. Wouldn't want to reinvent the wheel.
    You can, provided that MPL license is complied with.

    By the way, I have checked your project and it seems promising. Sorry for not checking it earlier, but I've been in a hurry and thought that "nxPascal" was like a new compiler or something. Indeed, there are many parts where you could reuse a lot of Asphyre: vector math, types, functions, GUI, not to mention the fact that you use same DGL OpenGL headers. Any reason why can't you build nxPascal on top of Asphyre, or as an extension of thereof, such as a combined project or something? (Especially now when it is on SVN.) Asphyre solves a lot of low-level tedious problems, while you could focus on actual high-level 3D stuff.

Page 1 of 2 12 LastLast

Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •