Articles in the C++ Category
C++, Matrix Fall, OpenGL »
This code emulates the falling code effect (digital rain effect) from the Matrix movie.
It uses the authentic fonts and a new particle engine for better visual effects.
Coded in c++ with the OpenGL API. Source code included.
This code received the ‘Superior Code’ award for Planet-Source-Code and many great feedbacks from programming websites.
Source code is fully documented in French.
Hope you like it !
(A french version of this post can be found on this blog)
And a Visual Basic version (Matrix Fall 3D) can also be found here (possibility to set custom texts)
C++, Matrix Fall, OpenGL »
Test en OpenGl d’un effet que je tentais de mettre au point pour la nouvelle version du Matrix Fall, mais qui pour finir n’aura jamais été utilisé.
L’effet est obtenu en décomposant une image de base en une série de carrés dont la taille est paramétrable.
Dans ce cas-ci, les carrés ont une taille de 1×1 pixel. Pour une image de 256×256, cela donne un total de 65536 particules.
Rien de très compliqué techniquement. Les sources commentées vous permettront d’apprendre à charger une image au format BMP ainsi que de comprendre les fonctions …
C++, Matrix Fall, OpenGL »
Cette démo est en quelque sorte l’objectif que je m’étais fixé pour me lancer dans le c++.
Pas mal de petites nouveautés et notamment l’utilisation de l’OpenGl, contrairement à DirectX utilisé pour Matrix Fall 3D.
C++ oblige, comparé au vb, la puissance est multipliée par 10x, ce qui m’a donné l’occasion d’y ajouter un petit effet de particule que je trouve assez sympa.
Cette démo a été portée sur Linux : KMatrix 3D par Artur Szymiec.
Et pour télécharger la démo et les sources, c’est par ici : .
C++, Network programming »
Classe écrite en C++ gérant le protocole HTTP.
Toutes les spécificités du protocole HTTP n’ont pas été intégrées, elle vous permet néanmoins d’apprendre assez facilement à manipuler les sockets non-bloquants grâce à un processus indépendant se chargeant de les gérer.
Le mode de transfert “chunked” (transfert-encoding: chunked) est aussi de la partie.
Les chunks permettent de s’assurer de la bonne réception des données lorsque la taille totale des données qui seront reçues n’est pas connue.
Chaque chunk commence par une valeur indiquant la taille des données contenues dans ce paquet.
En général, les chunks sont …
C++ »
Le fichier entête “d’entrées/sorties” qui va nous permettre de manipuler les fichiers :
#include
Ensuite la définition d’un “macro” qui simplifie la convertion en ‘int’ :
#define CTOI(C) (*(int*)&C)
La structure qui va acceuillir les données de notre image :
// la structure qui contient les infos de notre image
struct PropPicture {
// l’entête
unsigned char Header[0x36];
// la position et la taille des données
unsigned int DataPos, DataSize;
// les dimensions de …
C++ »
Les déclarations :
// indispensable
#include
// contient l’hwnd de la fenêtre
HWND hWnd;
// l’instance
HINSTANCE hInstance_sz;
// la fonction de retour, celle qui va recevoir les messages en provenance du système (ouverture, fermeture,…)
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
La fonction de retour WndProc :
// Cette fonction est appelée par Windows (c’est via celle-ci que tous les messages sont envoyés à la fenêtre)
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam,LPARAM lParam)
{
switch (uMsg)
{
case WM_SYSCOMMAND:
…
C++, OpenGL »
Le multitexturing requiert le chargement d’une extension désormais intégrée dans OpenGL depuis sa version 1.3.
Pour savoir si une carte supporte une extension, reportez vous au post suivant.
La première chose à faire est d’ajouter le fichier entête suivant: glext.h, téléchargeable ici.
Ensuite, il faut déclarer les variables qui vont contenir les adreses des fonctions et qui permettront l’utilisation du multitexturing.
// spécifie si l’extension est supportée
bool multitextureSupported = false;
// spécifie le nombre d’unités de texture supportées
GLint maxTexelUnits = 1;
// les variables qui vont contenir les adresses pointant vers les fonctions utiles
PFNGLMULTITEXCOORD1FARBPROC …
C++, OpenGL »
Les extensions sont des fonctionnalités qui viennent s’ajouter à la base d’OpenGl. Elles permettent aux développeurs d’accéder à des fonctionnalités matérielles présentent sur certaines cartes. En gros, elles permettent aux constructeurs d’apporter leurs petites touches personnelles lorsque les spécifications de base leur semblent insuffisantes.
Ainsi NVidia, Ati, Intel, SGI, 3dFx, S3, … ont tous développé des extensions propres à leur matériel.
Pour connaître les extensions supportées par votre carte, il vous suffit d’employer la fonction glGetString(GL_EXTENSIONS); qui retourne un pointeur vers une chaîne de caractères de type “const unsigned char”.
Voici le code …





