Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





fuentes del unreal

Iniciado por ethernet, 21 de Enero de 2003, 06:01:37 PM

« anterior - próximo »

ethernet

El  articulo es de un tal rIO, es sobre radial blur. Es tan descarao el nehe como el rio a mi modo de ver.

Por cierto, en ls fuentes del unreal en la clase base q implementa el driver para  el render, primero pone los metodos q necesita y despues pone 8 metodos para rellenar  la virtual table ( no se exactamente como se llama, es ese vector de punteros a funciones para implementar metodos virtuales). Sabeis por q hace eso? con q fin

saludos

seryu

                                ethernet yo no te entiendo, nada mas abrir la pagina pone:

Hi! I'm Dario Corno, also known as rIo of SpinningKids. First of all, I want to explain why I decided to write this little tutorial. I have been a scener since 1989. I want all of you to download some demos so you understand what a demo is and what demo effects are.


el source no es del tal dario? qe problema hay entonces?                                

ethernet

seryu: elñ source del tutorial es de rIO pero es calcado (copiado de) otro. Busca una demo de un tal delta & franky de 4k. Es una demo de 4k hecha en c++ y despues comparas los fuentes y lees la cabecera y el readme de la demo de 4k's

saludos

seryu

                                entonces, qien copio fue el tal rio, y no nehe  :loco:                                

ethernet

Citar

El articulo es de un tal rIO, es sobre radial blur. Es tan descarao el nehe como el rio a mi modo de ver.

repitiendo mis palabras .. xD tanta culpa tiene nehe como rio.

saludos

Mars Attacks

                                Esta es la conversación de besugos más rara que he visto por aquí :P. Al menos, en los flames no tratamos de ser coherentes...                                

Grugnorr

                               
Citar
Por cierto, en ls fuentes del unreal en la clase base q implementa el driver para el render, primero pone los metodos q necesita y despues pone 8 metodos para rellenar la virtual table ( no se exactamente como se llama, es ese vector de punteros a funciones para implementar metodos virtuales). Sabeis por q hace eso? con q fin

Uhmmm, pega el código, anda que esa pregunta suena muy rara. O te refieres a que define 8 métodos como virtuales(que el compilador mete en la vtable con los punteros a función que tú dices....). Supongo que sabes qué es un método virtual y el polimorfismo... pega el código, plz ;)                                
hat the hells!

ethernet

Si me refiero a eso mismo q dices o sea:





class blop{

   virtual init() = 0;

   virtual end() = 0;

   virtual draw() = 0;

 

   virtual lpvtPadd0(){}    

   virtual lpvtPadd1(){}

   virtual lpvtPadd2(){}

   virtual lpvtPadd3(){}

};





no tengo los fuentes a mano ahora mismo, no estoy en mi pc

Grugnorr

                                lpvt : LongPointerVirtualtable en notación húngara... la primera vez que lo veo  :o

Weno, a ver. Hay 2 tipos de métodos virtuales, los puros y... los pecadores?  :jaja: . Perdón

          -Virtuales puros: DEBEN ser implementados en las clases concretas derivadas:

class IRenderable
{
public:
        virtual void Render()=0;
};

Render() tiene que implementarse en las clases concretas( no abstractas, aquellas que instancias) derivadas de IRenderable

class CEntity:public IRenderable
{
public:
          void Render(){m_Mesh.Draw();}//código de dibujado en el ejemplo
};


Los métodos virtuales normales ya tienen una implementación( puede estar vacía) que puede o no "sobrecargarse", suele ser un comportamiento standard que las clases derivadas especializan.

(Ando muy sobado como para pensar ejemplos decentes :( )

class CVehicle
{
public:
       virtual void GoTo(int X, int Y){m_X=X; m_Y=Y;}

potected:
        int X;
        int Y;
};

class CAirPlane:public CVechicle
{
public:
       virtual void GoTo(int X, int Y)
             {
                     //Para viajar de un lado a otro, el avión tiene
                    //que Despegar y Aterrizar ;)
                    Despegar();
                    m_X=X;
                    m_Y=Y;
                    Aterrizar();

              }
     void Despegar();
      void Aterrizar();
};                                
hat the hells!

Grugnorr

                                Queda patente que programo en inglés por defecto ;)                                
hat the hells!

ethernet

SI, entiendo perfectaente los metodos virtuales y la herencia pero no entiendo por q pone esas funciones virtuales para rellenar la tabla de punteros virtuales. Es para q el struct total tenga un tamaño potencia de dos o q este optimizado para el tamaño de ciertas caches o para q este alineado .. :_(

saludos

seryu

                               
CitarSI, entiendo perfectaente los metodos virtuales y la herencia pero no entiendo por q pone esas funciones virtuales para rellenar la tabla de punteros virtuales. Es para q el struct total tenga un tamaño potencia de dos o q este optimizado para el tamaño de ciertas caches o para q este alineado .. :_(

saludos

ni pa 1 ni pa otro                                

Grugnorr

                                Ya decía yo...  :jaja:

Mirándolo con más cuidado... Padd->padding. Uhm, 7 métodos más el tamaño de tener una vtable por tener algún método virtual... 8*4=32bytes... suena a padding. En la vida he usado el padding manual, para eso están los compiladores xD.

También se puede pensar que así tiene 4 métodos virtuales "auxiliares" si necesita añadir algo que se le olvidó  :jaja: , incluso se pueden llamar a los métodos virtuales a través de la vtable a capón.... feo suena eso.


Supongo que padding...

Yo recuerdo el código como bien comentado y diseñado... ésto del padding me recuerda al del QuakeI :S                                
hat the hells!

ethernet

Lo mejor sera mandarle un mial y preguntarle por q hace eso. :DDDDD

Grugnorr

                                Voy a ver si me lo vuelvo a bajar y le echo un ojo.... ;)                                
hat the hells!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.