Historique des modifications - Message

Message #8631

Sujet: [PC]Ray-tracer en temps réel


TypeDateAuteurContenu
Création du message28-08-2010 01:17:23nico
Salut à tous, dans le but d'apprendre tout en s'amusant, je propose un projet communautaire, qui est un raytracer en temps réel.
j'ai vu un exemple ici: http://www.massal.net/article/raytrace/page1.html qui démontre qu'en théorie ce n'est pas trop compliquéwink
Mon idée c'est de faire un rendu en temps réel+ une animation).

Je propose qu'on utilise opengl, par contre je n'y connait pas grand chosewink
J'ai fait 2 classes pour séparer les calculs de lancé de rayons et le mode d'affichage qu'on pourra changer.

Code c++ :

class Ecran
{
      protected:
        int largeur, hauteur;
        unsigned char*  cellulesRVB;

        Ecran(int Largeur, int Hauteur):    hauteur(Hauteur),
                                            largeur(Largeur),
                                            cellulesRVB((unsigned char *) malloc( Largeur * Hauteur * 3 ))
        {
            memset(cellulesRVB, 255, Largeur * Hauteur * 3 );
            glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
            glClear(GL_COLOR_BUFFER_BIT);
        }
        void diffuser()
        {
            glDrawPixels( largeur, hauteur, GL_RGB, GL_UNSIGNED_BYTE, cellulesRVB);
        }
};

Voilà j'ai testé avec gldrawpixels, mais si vous connaissez mieux faites signewink

Code c++ :


class lancerDeRayon : public Ecran
{
    public:
    lancerDeRayon(int Hauteur,int Largeur):Ecran(Hauteur,Largeur)
    {
    }
    void trace()
    {
        int z=-1;
        for (int y = 0; y <hauteur; ++y)
        {
            for (int x = 0; x < largeur; ++x)
            {
                float rouge = 0, vert = 0, bleu = 0;
                /*
                Calculs
                */
                cellulesRVB[z++]=((unsigned char)min(rouge*255.0f,255.0f));
                cellulesRVB[z++]=((unsigned char)min(vert*255.0f, 255.0f));
                cellulesRVB[z++]=((unsigned char)min(bleu*255.0f, 255.0f));
            }
        }
        diffuser();
    }
};

Que pensez-vous de l'organisation ? le but est de faire un truc simple et modulable, afin qu'on se concentre uniquement sur le lancé de rayons par la suite.

Retour

OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
81 invités en ligne
membre en ligne: -
RSS Feed