Logo

¡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.
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.