Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: DarkKRuleR en Marzo 02, 2016, 10:17:16 AM

Título: Es ineficiente reasignar y reposicionar las luces 3D en cada step?
Publicado por: DarkKRuleR en Marzo 02, 2016, 10:17:16 AM
Buenas! Pues tengo varios objetos que hacen de luz, obLuz, y este script:

obCtrl.vrLuzIndex = 0;

with( obLight ) {
    d3d_light_enable( obCtrl.vrLuzIndex, true );
    d3d_light_define_point( obCtrl.vrLuzIndex, vrXDraw, vrYDraw, vrZDraw, 90, c_white );
    obCtrl.vrLuzIndex += 1;
}


Ese script lo llamo 1 vez al comenzar y ya me coloca todas las luces, y queda funcionando sin hacer nada más. El problema es que constantemente, CONSTANTEMENTE se rota todo el escenario, y ahí las luces dejan de funcionar, porque éstas también DEBERÍAN moverse con el escenario para que la iluminación no cambie.

Sería eficiente llamar a esa función en cada step? O al menos a una subfunción. El enable creo que no haría falta, el tema es que debo REPOSICIONAR las coordenadas de cada luz en cada step. Hay forma de hacerlo sin define_point en cada step? Y si lo hago, puede ser ineficiente? (mi PC es potente así que no puedo saberlo). Intuyo que no pasa nada, pues no es más que modificar unas simples variables, todo el trabajo pesado de iluminación se ejecuta en cada vértice en draw, para calcular su iluminación, no a la hora de definir dónde están las luces, pero quiero estar seguro
Título: Re:Es ineficiente reasignar y reposicionar las luces 3D en cada step?
Publicado por: Clamud en Marzo 02, 2016, 03:31:25 PM
No creo que afecte el rendimiento; como mencionas, el trabajo pesado se hace en el evento Draw; en cada step se recalcula la iluminación porque GMS no tienen un buffer predefinido para ello. Sólo deberías borrar la función _enable.
Título: Re:Es ineficiente reasignar y reposicionar las luces 3D en cada step?
Publicado por: DarkKRuleR en Marzo 02, 2016, 09:11:43 PM
Gracias, pues fuera la función enable, eso lo haré sólo una vez al iniciar la room, según el número de luces.
Lo dejo abierto por si llegan más opiniones :D