Catégorie dans Programmation

C++/Python wxWidgets3/wxPython4 avec CodeBlocks et pybind11

Au travers de l’application wxCppPy je vais vous apprendre à créer une application wxWidgets qui charge des scripts python et qui se laisse modifier et manipuler par wxPython. A savoir que wxPython4, qui porte le nom de version Phoenix, ne possède plus d’exemple pour interfacer wxPython avec wxWidgets. Je vais donc vous expliquer comment y parvenir.

Lire la suite

[Mageia 6]Compiler et installer GCC 6, 7, 8 ou 9

Introduction :

Je suis sur Mageia 6 et suite à une question que j’avais posée sur le forum de Mageia. J’ai décidé de me lancer et de compiler les versions que je souhaite de gcc.
Sur Ubuntu le problème se pose beaucoup moins car les paquets pour installer gcc6, 7 et 8 sont fournis.

Attention si vous êtes sur Mageia 7, qui est encore en bêta au moment où j’écris cet article, gcc 8.2.1 est la nouvelle version par défaut de gcc.

Tout d’abord des liens utiles:

Résumé :

$ su
# urpmi lib64gmp-devel
# urpmi lib64mpfr-devel
# urpmi lib64mpc-devel
# urpmi lib64isl-devel
# exit # pour quitter le mode administrateur

Pour les exemples j’utilise la dernière release de gcc8 : gcc-8.3.0. A vous de remplacer les «8_3_0» et «8.3.0» par votre version de gcc.

$ mkdir gcc8
$ cd gcc8
$ svn checkout svn://gcc.gnu.org/svn/gcc/tags/gcc_8_3_0_release/ source
$ mkdir obj
$ cd obj
$ ../source/configure --with-isl-include=/usr/include/ --with-isl-lib=/usr/lib64/ --program-suffix=-8.3.0 --prefix=/usr --libdir=/usr/lib/gcc/8.3.0/lib --datarootdir=/usr/share/gcc/8.3.0 -bindir=/usr/bin --libexecdir=/usr/libexec --includedir=/usr/include
# 16 étant le nombre de cpu de ma machine à vous de mettre le nombre de thread que vous souhaité.
$ make -j 16

Pour l’installation deux solutions :
Installer gcc dans un répertoire à part.

$ make DESTDIR=/home/suryavarman/working/gcc8/dest install

Installer gcc dans l’arborescence de /usr/

$ su
# make install

Lire la suite

Godot 3.0.6 / 3.1 export HTML5 (GLES 3/GLES 2)

Godot 3.0.6 / 3.1 export HTML5 (GLES 3/GLES 2)

Sonic le saumon:

Lors de la Jam des Volcans notre équipe a décidée de découvrir Godot.

Le thème de la Global Game Jam fut la maison, le chez soit. C’est tout naturellement que nous avons décidé de créer un jeux sur Sonic le saumon.

Sonic le saumon remonte le courant du fleuve qui la vu naître pour frayer et mourir. Mais voilà pour son plus grand malheur nous n’avons eu le temps que de lui donner que deux options. Mourir de faim ou se faire manger par un Ours. Le tout sur une simple ligne droite avec quelques bas fonts et obstacles qui le ralentissent. Seul plaisir qu’il aura c’est de nager et manger quelques autres poissons avec une musique entrainante composée par l’un des membres de l’équipe.

Voici le lien vers l’application WebGL (attention c’est long à charger, la version GLES2 étant la plus rapide à s’initialiser):

[GLES3]Sonic le saumon

[GLES2]Sonic le saumon (réaliser avec Godot 3.1.beta 10)

Cliquer sur «Nager» puis déplacer Sonic le saumon en déplaçant la sourie de gauche à droite.

Attention:

Les prérequis sont d’avoir un navigateur compatible avec WebAssembly et WebGL 2.0.
cf : Godot documentation export html5

Lire la suite

.template

Voici un bout de code décrivant un cas concret où j’ai dû apprendre à utiliser l’instruction.

.template

Avant de lire ce bout de code, je vous conseil de lire la faq de developez qui explique très bien à quoi sert l’instruction .template.

L’objectif du bout de code suivant est de définir un traitement commun pour différent type de fichier 3D. C’est une version simplifier de ce que j’ai eu à faire. Ici il n’y a pas beaucoup de sens à utiliser un template T_Mesh mais le sujet est de montrer un cas d’utilisation de l’instruction .template. A la fin de l’article je vous ai ajouté la version original des classes Mesh et Vertex ceci pour donner un peu plus de sens à l’utilisation de ce bout de code.

Vous pouvez retrouver le code sur CppShell.

Lire la suite

Implémenter Pi avec un template

L’idée est d’utiliser acos(-1) qui donne pour résultat le nombre pi. Pour ce faire -1 sera converti en type T. J’utilise acos de l’en-tête cmath. On remarquera que acos est défini pour les types float, double et long double, en c++11 il peut prendre en entré des types entiers pour retourner des doubles.

template<typename T>
T Pi()
{
    return acos(static_cast<T>(-1.0));
}

Lire la suite