[n3xt-D] un moteur pour PureBasic

Généralités sur la programmation 3D
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Progi1984 a écrit :Les fonctions commencant par i (iCreateLight, etc...) correspondent à des fonctions directes de Irrlicht ou à un ensemble de fonctions créés par toi ?
Toutes les fonctions sont créées par moi, si l'on peut dire, il s'agit de fonctions adaptées et dérivées de
celles du moteur d'origine (lui même modifié dans certains cas).
Le i est uniquement là par analogie à Irrlicht, et parce que je suis obligé de mettre
un pré-fixe pour éviter les conflit avec certaines fonctions natives de PB ;)
Force et sagesse...
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

En fait, en PureBasic, on peut accéder directement aux fonctions de l'API Windows ou SQLite, en mettant le nom de l'API suivi d'un underscore. Est ce jouable avec Irrlicht ? Cela permettrait d'accéder directement au core d'Irrlicht.
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Progi1984 a écrit :En fait, en PureBasic, on peut accéder directement aux fonctions de l'API Windows ou SQLite, en mettant le nom de l'API suivi d'un underscore. Est ce jouable avec Irrlicht ? Cela permettrait d'accéder directement au core d'Irrlicht.
Non. En fait le code de base d'Irrlicht est très fortement typé POO, donc pas vraiment accessible directement à partir de PureBasic.

A titre d'exemple, j'ai commencé à coder des fonctions mathématique sur les vecteurs et
autres matrices sous forme de fichiers 'pbi' dans le répertoire include, car celle de Irrlciht
ne sont pas directement accessible, et c'est bien dommage, surtout quand il faut réécrire quelque
chose qui existe déjà et que l'on a sous la main.. ;)

A moins que quelqu'un est un tuyaux la dessus que je n'ai pas...
Force et sagesse...
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

@Tmyke

Je ne comprends pas ta dernière demande mais à mon avis, il y a plusieurs choses auxquelles il vaut mieux que tu te fixes avant d'entrer dans un nombre incalculable de fonctions remaniées.

Si tu pouvais "insister" un peu ici sur le procédé que tu fais et celui que tu voudrais faire, je pense qu'on pourrait trouver une solution.

Aussi, je m'en pose quelques unes. Quand j'appelle une fonction, est-ce une procédure qui appelle une autre procédure?

Est-ce une macro qui appelle une procédure?

Ce sont là des questions techniques que je me pose...

Ollivier
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Ma dernière question reposait sur le fait d'intégrer des librairies sous PureBasic qui sont
à l'origine destinées à des langages Orienté Objet. ;)

Plus généralement, en ce qui concerne irrPB, je prend le moteur Irrlicht, que j'épure
de certains trucs (comme le support DX8 obsolète aujourd'hui à mon sens), que je modifie sur
certains autres. En suite, je code des fonctions en C++, toujours au sein du même projet,
pour permettre la mise en oeuvre des éléments souhaités. Je compile tout cela pour arriver
à une DLL (irrPB.DLL sous windows).
Je wrappe toute ces fonctions écrites pour les rendre accessible sous PureBasic (c'est dans
le fichier irrPB.pbi). Voilà.

J'espère avoir répondu à tes interrogations.
Force et sagesse...
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Okay! Donc si je comprends bien, tu as été jusqu'à triturer le source d'origine! C'est un travail plus ou moins faramineux et parsemé d'embuches.

Tu parles de C++. En regardant dans les sources, j'ai vu en effet les fichiers header qui m'ont instinctivement... rebuté.

Je vais émmettre une hypothèse mais surtout, prends la à la légère, hein!
Est-ce que l'on ne pourrait pas convertir le source C++ en PureBasic? Et obtenir directement un "simple" (mot un peu facile, je l'accorde) fichier PBI (ou ensemble de fichier PBI, ce serait plus humain) ne traitant les fonctions que par des macros?

Cette hypothèse ne reste que ce qu'elle est : une hypothèse. Je t'en parle juste à titre de performances qui "dépasseraient" assurément Ogre. J'ignore ce qu'il en est en terme de travail de conversion. D'où ma prise de ce point précis avec des pincettes.

En attendant, j'espère que les Linuxiens parviennent rapidement à convertir ton travail pour qu'ils voient déjà son avancement.
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

Porter le code source du C++ au Pure est tout a fait possible mais humainement cela requière un travail de titan. Il faudrait faire une moulinette pour convertir le code. Après c'est sur que niveau perfs sa serait l'idéale.
Anonyme

Message par Anonyme »

y a plein de chose que pb ne peut pas gerer , comment faire avec les namespaces , les templates , etc...

Vaut mieux laisser tel quel a mon avis. Recodé IrrLicht en pb faut être maso :D
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Ce serait l'idéal. Je ne pensais pas obtenir tant en terme d'observation. Seulement, si je déduis bien, ça implique en plus du fait que ce soit un travail de titan, d'annuler tous les efforts de Tmyke fait jusqu'à maintenant (A moins que Tmyke me dise que je me trompe). Résultat, j'aurais mieux fait de ne rien dire...

J'ai été à nouveau voir les sources, c'est énorme et actuellement inmangeable en effet...

@ChaOs

Une moulinette? Un programme qui transforme le C++ en PureBasic. Punaise! Il serait sûrement énorme!

A la limite, faire un "structureur". C'est à dire un programme qui est capable de créer un arbre des fichiers selon leurs appels internes (includes). ça permettrait de situer sa progression durant la conversion...

J'essaierai de voir ce qu'il est faisable de faire dans les prochains jours. Je ne me lancerai sûrement pas dans un projet qui casse du sucre sur le dos de Tmyke. Quand je vois tout ce qui est déjà accessible par son travail, je pense d'ailleurs Tmyke que tu seras averti de mes éventuelles "bidouilles", qui sait? Peut-être qu'il y a un ou deux détails réalistes dans ce qui peut me passer par la tête!!
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Oups!

@Cpl

Je n'avais pas vu ta réponse. Dans ce cas des caractéristiques du C++ impossibles à convertir en PB, peut-être est-il possible de faire un autre sujet assez poussé sur le C++ au sein de ce forum?

J'ai pu constater ce qu'était les namespaces. Par contre, les templates, c'est de la totale ignorance pour moi!

Ollivier
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Cpl.Bator a écrit :y a plein de chose que pb ne peut pas gerer , comment faire avec les namespaces , les templates , etc...

Vaut mieux laisser tel quel a mon avis. Recodé IrrLicht en pb faut être maso :D
d'accord sur les deux points. Il y a beaucoup de chose que ne gère pas PB. Certes, on peut
toujours contourner en codant autrement, mais déjà se retaper plusieurs centaines de milliers de lignes de code
à traduire en PB, mais si en plus faut tout reprendre pour recoder ce qui n'est pas supporté par PB,
c'est à dire 75% du code, alors là maso est un terme limite gentil :D

J'ai parfaitement conscience que ce moteur d'abord destiné à la communauté PureBasic a son code
source en C++, et que donc forcement les amateurs qui voudront se plonger dedans seront
très peu nombreux.
Ollivier a écrit :J'essaierai de voir ce qu'il est faisable de faire dans les prochains jours. Je ne me lancerai sûrement pas dans un projet qui casse du sucre sur le dos de Tmyke. Quand je vois tout ce qui est déjà accessible par son travail, je pense d'ailleurs Tmyke que tu seras averti de mes éventuelles "bidouilles", qui sait? Peut-être qu'il y a un ou deux détails réalistes dans ce qui peut me passer par la tête!!
pas de soucis, toute remarques, observation, critiques et propositions sont
toujours les bienvenus, et taper la discute de ce qui nous passionne est toujours un plaisir ;)
Force et sagesse...
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

@Tmyke

Pas de prob!

A ce sujet, j'ai fouiné la DLL. Qu'est-ce que c'est la dizaine de fonctions dont les noms sont assez dingues!?

Code : Tout sélectionner

   If OpenLibrary(0, "sample_IrrPB\IrrPB.DLL")
      If ExamineLibraryFunctions(0)
         N = 0
         Repeat
            If NextLibraryFunction()
               Debug Str(N) + " " + LibraryFunctionName()
            Else
               Break
            EndIf
            N + 1
         ForEver
      Else
         Debug "Examen DLL impossible!"
      EndIf   
      CloseLibrary(0)
   Else
      Debug "DLL non chargée!"
   EndIf
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Il s'agit de quelques fonction extern C pour XML d'Irrlicht qui sont dans la DLL, mais pour le moment
non employées ;)
Force et sagesse...
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Je revenais vers vous pour savoir si une release Linux était née...
Anonyme

Message par Anonyme »

Cpl.Bator a écrit :http://www.assembla.com/spaces/GameClas ... ux.tar.bz2

tu n'a pas compilé l'ajout de Tmyke Flaith :D



donc , dans les sources :


make
make sharedlib


la sortie est dans lib/Linux

le .a dans les userlibrairie de PB
le .so dans usr/lib
ca marche pas ?? :roll:
Répondre