Novedades del Blog

lunes, 16 de junio de 2008

Nucleo del Engine

El nucleo del Engine esta casi migrado, a priori, parecia una tarea facil pero se ha ido complicando, aun así creo que vamos por el buen camino. Las clases RenderContext y RenderDevice estan migradas a falta de probarlas, la clase RenderManager esta en proceso, ya que solo esta migrado el Bitmap, espero poder acabar los demas en breve.

Uno de los cambios más dificiles que he encontrado ha sido a la hora del pintado, cuando se crean los vertices, ya que en C# se utiliza un objeto llamado GraphicsStream, este se encarga de ir almacenando los vertices del objeto a pintar mediante su método Write() .

Pongo un pequeño ejemplo, es una parte del método Draw() del pintado de un Bitmap, seguro que hay mas maneras de implementarlo pero esta es la que me parece mas optima, cuando haga las pruebas vere que tal funciona :)

Pongo el antes en C++ ...:

m_pVertexBuffer->Lock( 0, SIZE_VERTEX_BUFFER_REQUERIDO, ( void**) &pVertices, 0 );
//Y ahora creamos un vertice ...
pVertices->x = x;
pVertices->y = y;
pVertices->z = z;
pVertices->w = rhw;
pVertices->u = u;
pVertices->v = v;
pVertices++;
... // Asi todos los vertices que te hagan falta
m_pVertexBuffer.Unlock();

Y el despues en C#:

GraphicsStream data = m_pVertexBuffer.Lock(0,0, LockFlags.None);
//Y ahora creamos un vertice ...
data.Write(new CustomVertex.TransformedTextured(x,y,z,rhw,u,v));
... // Asi todos los vertices que te hagan falta
m_pVertexBuffer.Unlock();

No hay comentarios:

Publicar un comentario