es increible acabo de realizar una prueba sobre la velocidad de los cambios de estado del device y me he llevado una sorpresa, siguen siendo igual de lentos si iguales por ejemplo el ambient al mismo color que ya tenia establecido
el primer codigo es el doble de rapido con una gforce2, de 30 fps me baja a 9fps!!!
for (int n = 0; n < 100000; n++)
{
if (col != System.Drawing.Color.White)
device.RenderState.Ambient = col;
}
for (int n = 0; n < 100000; n++)
{
//if (col != System.Drawing.Color.White)
device.RenderState.Ambient = col;
}
¿como puede ser posible que en el managed no hayan hecho ya de serie una maquina de estados inteligente? tendre que volver a hacer una para c-sharp (grrr)
saludos
Parece claro que el manager de estados sigue siendo imprescindible... :D
Saludos.
puedes explicar el problema? estoy empezando con C# y no entiendo a lo que te refieres
Siempre se ha dicho (y es cierto) que los cambios de estados de render o textura son costosos para la aceleradora de ahí que muchos tengamos implementado un manager de estados que se encargue de evitar los cambios de estado innecesarios. Entonces lo que creo que esperaba zupervaca es que managed DX tuviera implementado internamente dicho manager que evitara esos cambios redundantes. Pero como se puede ver no es así, por lo que hay que seguir teniendo dicho manager.
Saludos.
PD: Direct3D tiene un manager incorporado (de hecho hay un ejemplo en el SDK sobre ello), pero nunca lo he probado.