raafal - un project de framework d'application 3d

Vous avez développé un logiciel en PureBasic et vous souhaitez le faire connaitre ?
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: raafal - un project de framework d'application 3d

Message par G-Rom »

Dans les exemples avancé de PureBasic , il y a un exemple de création de contexte OpenGL avec PureBasic.
windows only , mais facilement portable pour Linux : https://www.opengl.org/wiki/Tutorial:_O ... tion_(GLX)
windows : https://www.opengl.org/wiki/Creating_an ... text_(WGL)

Quand à GLFW , peu tu créer un contexte en donnant le handle d'un contrôle ( widget / fenêtre ) existant ? si non, tu seras obligé d'importé la totalité de GLFW sous pb pour géré les événements ? SFML te permet de créer un contexte OpenGL à l'intérieur d'un contrôle PB, en revanche , exit les sprite , la lib vector , etc...
mais du coup , tu n'as que 2/3 fonctions à importé , les événements seront toujours géré par PB.

Code : Tout sélectionner

void sf::Window::create	(	WindowHandle 	handle,
const ContextSettings & 	settings = ContextSettings() 
)	
et le contextsettings te permet de choisir ta version opengl :
http://www.sfml-dev.org/documentation/2 ... ttings.php

Quand aux extension opengl , tu peu facilement faire une procedure PB portable :
https://www.opengl.org/wiki/Load_OpenGL_Functions
Avatar de l’utilisateur
grabiller
Messages : 103
Inscription : lun. 10/sept./2012 11:55
Localisation : France - 89220 Rogny-Les-Septs-Ecluses
Contact :

Re: raafal - un project de framework d'application 3d

Message par grabiller »

@G-Rom
Comme je le dis dans un message précédent, on peut tout faire avec les API natives, je peux même tout faire en C/C++ au besoin, mais là n'est pas la question.
Le problème n'est pas de savoir comment créer un GetProcAddress() portable (j'ai déjà tout ça), ou de créer un context OpenGL avec glfw (je fais déjà tout ça) ou encore de charger toutes les extensions OpenGL (j'ai déjà tout ce qu'il faut pour ça), le problème est de faire prendre conscience des incohérences de certains aspects de PureBasic qui pourraient être résolues facilement et qui pourraient éviter de "faire tout cela, alors qu'au fond ça ne devrait pas être nécessaire".

Un OpenGLGadget configurable ? Et hop, on revient au "pur basic" et "tout ça n'est plus à faire". C'est pas un peu le but quand même ?

Cordialement,
Guy.
guy rabiller | radfac founder / ceo | raa.tel | raafal.org
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: raafal - un project de framework d'application 3d

Message par G-Rom »

grabiller a écrit :@G-Rom
Comme je le dis dans un message précédent, on peut tout faire avec les API natives, je peux même tout faire en C/C++ au besoin, mais là n'est pas la question.
Le problème n'est pas de savoir comment créer un GetProcAddress() portable (j'ai déjà tout ça), ou de créer un context OpenGL avec glfw (je fais déjà tout ça) ou encore de charger toutes les extensions OpenGL (j'ai déjà tout ce qu'il faut pour ça), le problème est de faire prendre conscience des incohérences de certains aspects de PureBasic qui pourraient être résolues facilement et qui pourraient éviter de "faire tout cela, alors qu'au fond ça ne devrait pas être nécessaire".

Un OpenGLGadget configurable ? Et hop, on revient au "pur basic" et "tout ça n'est plus à faire". C'est pas un peu le but quand même ?

Cordialement,
Guy.
je suis entièrement d'accord la dessus.
benmalartre
Messages : 2
Inscription : ven. 27/sept./2013 10:29

Re: raafal - un project de framework d'application 3d

Message par benmalartre »

Hello Guy!
Je vois que tu utilises GLFW...
Je rencontre des probleme de linker avec PB 5.4 sur linux, le code compile/run en PB 5.3 (GLFW3 static lib)
Pour savoir si tu as essayé ce combo(GLFW3/PB5.4/Linux) et si tu rencontres le meme probleme...
Avatar de l’utilisateur
grabiller
Messages : 103
Inscription : lun. 10/sept./2012 11:55
Localisation : France - 89220 Rogny-Les-Septs-Ecluses
Contact :

Re: raafal - un project de framework d'application 3d

Message par grabiller »

Hello,

Quelques news à propos du développement de raafal.

Je sais.. le développement de raafal est plutôt lent, mais comme vous le savez sans doute déjà, je le fais durant mes temps libres et j'aimerai, dans la mesure du possible, faire les bons choix dès le départ, tout en gardant le projet aussi simple et léger que possible mais également aussi flexible et puissant que possible. Facile à dire mais pas si facile à faire quand on est confronté à pas mal de choix possibles. Ceci dit je ne suis pas non plus hyper pressé, je préfère prendre le temps qu'il faut pour faire les choses proprement, en tout cas en accord avec l'idée de départ. Il est vrai que jusqu'à présent j'ai passé la plupart de mon temps à tester et expérimenter différents choix possibles au lieu de coder raafal. Ceci dit, une bonne partie de la base du framework est déjà en place.

Cela dit, le développement de raafal commence à évoluer un peu plus rapidement car certains choix définitifs concernant certains points clés du framework ont désormais été pris:


1) OpenGL:

Pour un framework orienté graphiques, l'accélération hardware est obligatoire, notamment avec l'OpenGL et PureBasic offre plusieurs options dans ce sens, mais manque encore d'une chose pour pouvoir aborder le développement d'application professionnelles sans avoir à "bidouiller": La possibilité de pouvoir configurer le contexte OpenGL utilisé pour avoir accès aux récentes versions "Core". J'ai pesté un peu partout sur le forum à propos de ça mais j'ai finalement arrêté de me poser la question pourquoi cet OpenGLGadget ne propose pas cette possibilité de configuration.. C'est comme rechercher le Sens de la Vie et cela me rend fou..

Pour circonvenir ce problème, j'ai expérimenté avec plusieurs librairies, GLFW, SFML, SDL, .. mais je me suis retrouvé confronté à d'autres problèmes, notamment des interférences dans la "main loop" entre PureBasic et les librairies. Au final, et suivant le principe KISS (keep it simple), je suis revenu aux "basiques" si je puis dire: utiliser le OpenGLGadget. Et pour contourner le problème de configuration OpenGL, je crée désormais un contexte OpenGL indépendant de celui de PureBasic et je le lie à la vue de l'OpenGLGadget. Ca parait simple, comme ça, mais encore faut-il savoir le faire, et j'ai été bloqué pas mal de temps à cause de cela sur Mac OSX.. Évidemment, au final, c'est super simple, *une fois que l'on sait comment faire*..

Voici le code pour ceux qui seraient intéressés:

Code : Tout sélectionner

        ; ---[ Allocate Pixel Format Object ]---------------------------------
        Protected pfo.NSOpenGLPixelFormat = CocoaMessage( 0, 0, "NSOpenGLPixelFormat alloc" )
        ; ---[ Set Pixel Format Attributes ]----------------------------------
        Protected pfa.NSOpenGLPixelFormatAttribute
        With pfa
          \v[0] = #NSOpenGLPFAColorSize          : \v[1] = 24
          \v[2] = #NSOpenGLPFAAlphaSize          : \v[3] =  8
          \v[4] = #NSOpenGLPFAOpenGLProfile      : \v[5] = #NSOpenGLProfileVersion3_2Core ; will give 4.1 version (or more recent) if available
          \v[6] = #NSOpenGLPFADoubleBuffer
          \v[7] = #NSOpenGLPFAAcceleratedCompute ; I also want OpenCL available
          \v[8] = #Null
        EndWith
        ; ---[ Choose Pixel Format ]------------------------------------------
        CocoaMessage( 0, pfo, "initWithAttributes:", @pfa )
        ; ---[ Allocate OpenGL Context ]--------------------------------------
        Protected ctx.NSOpenGLContext = CocoaMessage( 0, 0, "NSOpenGLContext alloc" )
        ; ---[ Create OpenGL Context ]----------------------------------------
        CocoaMessage( 0, ctx, "initWithFormat:", pfo, "shareContext:", #Null )
        ; ---[ Associate Context With OpenGLGadget NSView ]-------------------
        CocoaMessage( 0, ctx, "setView:", GadgetID(oglcanvas_gadget) ) ; oglcanvas_gadget is your OpenGLGadget#
        ; ---[ Set Current Context ]------------------------------------------
        CocoaMessage( 0, ctx, "makeCurrentContext" )
        
        ; do your OpenGL drawing..
        
        ; ---[ Swap Buffers ]-------------------------------------------------
        ; CocoaMessage( 0, ctx, "flushBuffer" )
Ce code est extrait de raafal moins la gestion des erreurs et il est supposé être exécuté dans une procédure (d'où les "Protected").
Pour des raisons pratiques, NSOpenGLPixelFormatAttribute est une macro en dur référençant une autre macro en dur sur une structure de taille fixe..

Code : Tout sélectionner

      ; ...[ array9_t ]......................................................
      Structure array9_t
        v.l[9]
      EndStructure
      ; ...[ NSOpenGLPixelFormatAttribute ]...................................
      Macro NSOpenGLPixelFormatAttribute
        array9_t
      EndMacro
      ; ...[ NSOpenGLPixelFormat ]............................................
      Macro NSOpenGLPixelFormat
        i
      EndMacro
      ; ...[ NSOpenGLContext ]................................................
      Macro NSOpenGLContext
        i
      EndMacro
Comme ce problème est désormais résolu, le développement de l'interface graphique de raafal est de nouveau sur des rails..


2) Scripting:

Au départ j'étais parti pour intégrer dans raafal le langage de script DAO. DAO était vraiment un super langage, très prometteur, en partie accéléré JIT. Malheureusement, son auteur a décidé d'en arrêter le développement.. et bien sûr, ceci lorsque j'avais intégré DAO assez complètement avec PureBasic et raafal.. Donc j'ai perdu pas mal de temps avec ça, mais ceci dit l'exercice en fut néanmoins assez intéressant.

Au final j'ai décider de revenir sur une valeur sûre, un langage robuste, bien connu et pas prêt de disparaître! Mon choix final se portait sur soit Python, soit Lua (en version JIT). Python est devenu le standard "industriel" dans les application liées aux images de synthèses, mais moi j'aime pas :) c'est lent, il faut une installation spécifique, c'est pénible de l'interfacer avec le code natif et son formatage à base d’indentation peut mener à des résultats catastrophiques. Je ne comprends toujours pas pourquoi c'est devenu un standard "industriel" mais bon, le syndrome du Sens de la Vie repointe sont nez, je laisse tomber..

KISS !! Bref, de nouveau, "keep it simple"/rester simple - tout en étant puissant - voici LuaJIT. LuaJIT est trop exceptionnel pour l'ignorer. Il est super léger à intégrer en tant que librairie statique avec PB, et c'est tout simplement le langage de script le plus rapide du monde. Point. De plus avec le développement récent de Terra (terralang), une extension de Lua utilisant LLVM, on peut envisager des développements incroyablement simples et puissants. Ainsi soit-il, raafal utilisera LuaJIT, affaire classée.

Sauf que.. comme d'habitude, je suis maintenant confronté à un autre "petit" problème, et comme par hasard pour de la compilation x64 sur Mac OSX (encore lui!): LuaJIT demande aux applications qui l'utilisent d'être compilées avec les options de liens suivants:

Code : Tout sélectionner

-pagezero_size 10000 -image_base 100000000
J'ai bien essayé d'utiliser les options de liens disponibles à partir de l'IDE de PureBasic, mais pour l'instant, rien à faire, ça marche pas.. (voici le lien du forum où j'en parle: http://www.purebasic.fr/english/viewtop ... 19&t=65866).

Si vous pouvez apporter une quelconque aide à ce sujet, vous serez plus que bienvenu(e)!


Il y a d'autres parties pour lesquelles des choix définitifs ont été fait, notamment côté données et tâches, mais elles seront abordées plus tard dans un autre message.

Merci de l'intérêt porté à ce projet,
Guy.
guy rabiller | radfac founder / ceo | raa.tel | raafal.org
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: raafal - un project de framework d'application 3d

Message par blendman »

Salut

Content d'avoir des nouvelles et de voir que ça continue d'avancer ;)
Je pense que lua est un excellent choix pour les scripts, car c'est très utilisé dans les jeux vidéos, donc ça doit être performant.
Python, je n'aime pas non plus ^^. Je crois que ça a été beaucoup utilisé car c'était peut-être un des "premiers" langages de script au début 1998-1999, ça a été intégré dans blender, donc ça a vite été connu. Et blender est vite devenu une référence en 3D, donc python aussi (alors que c'est un peu moisi avec le système d'indentation) Mais l'installation de python et la syntaxe/indentation me déplait aussi.

Si à l'occasion tu as des screenshots à poster, n'hésites, c'est toujours plaisant de voir à quoi ça ressemble :).

Bon courage pour la suite.
Avatar de l’utilisateur
grabiller
Messages : 103
Inscription : lun. 10/sept./2012 11:55
Localisation : France - 89220 Rogny-Les-Septs-Ecluses
Contact :

Re: raafal - un project de framework d'application 3d

Message par grabiller »

@blendman
Merci pour tes remarques et encouragements : )

Je posterai probablement des exécutables avant des screenshots car je suis en train d'intégrer le système d'organisation des donnés ('Cloud') et puis celui des tâches ('Storm') dont je parle dans un autre message posté sur le forum anglais que je vais traduire et reposter ici aussi.

Avec le scripting en place on pourra déjà commencer à 'bricoler' mais j'ai encore ce problème sur Mac.. Il faut absolument que je trouve une solution.
guy rabiller | radfac founder / ceo | raa.tel | raafal.org
Avatar de l’utilisateur
MetalOS
Messages : 1492
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: raafal - un project de framework d'application 3d

Message par MetalOS »

Salut grabiller, contant de voir que ton projet et toujours sur les rails. Impatient aussi de voir a quoi ca ressemble. Bonne continuation.
Avatar de l’utilisateur
grabiller
Messages : 103
Inscription : lun. 10/sept./2012 11:55
Localisation : France - 89220 Rogny-Les-Septs-Ecluses
Contact :

Re: raafal - un project de framework d'application 3d

Message par grabiller »

@MetalOS
Merci pour tes encouragement :)
guy rabiller | radfac founder / ceo | raa.tel | raafal.org
Avatar de l’utilisateur
Ar-S
Messages : 9472
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: raafal - un project de framework d'application 3d

Message par Ar-S »

Idem, j'ai hâte de têter quelques exe de raafal :wink:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: raafal - un project de framework d'application 3d

Message par G-Rom »

Ha, on dépasse les 9 ans , on en est ou Grabiller ? un petit screenshoot ? as tu réussi à ouvrir une fenêtre avec purebasic ? je peu t'aider : "openwindow()"
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: raafal - un project de framework d'application 3d

Message par falsam »

Le G-ROM est d'humeur taquine :mrgreen:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: raafal - un project de framework d'application 3d

Message par Kwai chang caine »

C'éteeeeeese !!!!
encore un projet "Abracadabrantesque" 8O

Image

Et apparemment....ça a fait

Image :mrgreen:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre