Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: zunou en 15 de Marzo de 2010, 04:37:54 PM

Título: Iphone opengl es
Publicado por: zunou en 15 de Marzo de 2010, 04:37:54 PM
Bueno, estoy empezando ya por fin a probar cosas en un ipod real XD, y la verdad es que estoy teniendo unos problemas de rendimiento muy graves :D no de framerrate, sino de consumo de procesador, lo que estoy tatuando de hacer es cargar unos 50 cubos 3d simultáneamente, sin texturas, simplemente los cubos, y al hacerlo, el consumo de procesador llega al 60%  8o.

Tal vez me he pasado, tratandose de un iphone, (aunque 50 cubos no es que sean mucho) o tal vez (lo mas seguro) la esté cagando en algo  :D, para dibujar los cubos estoy usando glDrawElements de la siguiente manera:

for(i=0; i<num_polys; i++){

glDrawElements(GL_TRIANGLE_STRIP, 3, GL_UNSIGNED_SHORT, &Indicescubo[i*3]);
}

No sé si esta es la forma correcta de dibujarlos, también he leído que hay una forma de cargarlos mediante buffers, pero no sé si eso reduciría el consumo de procesador (ni se como funciona XD).

bueno a ver si alguien puede ayudarme con esto :)

Saludos!
Título: Re: Iphone opengl es
Publicado por: Zaelsius en 15 de Marzo de 2010, 04:58:31 PM
Si tienes 50 objetos, deberías ser capaz de pintarlos todos usando, como mucho, 50 llamadas a glDrawElements. Ahora mismo estás usando una llamada para cada triángulo.

Se puede optimizar aun más pero de momento intenta hacer eso, una única llamada por objeto. Algo tipo:

glDrawElements(GL_TRIANGLE_STRIP, num_polys, GL_UNSIGNED_SHORT, &Indicescubo);
Título: Re: Iphone opengl es
Publicado por: tamat en 15 de Marzo de 2010, 07:06:41 PM
ademas como demonios pintas cubos con triangle strips?
Título: Re: Iphone opengl es
Publicado por: zunou en 15 de Marzo de 2010, 07:40:21 PM
 :-[ Es lo que pone en el manual, de apple, que se usen preferiblemente triange_strip, creo que cuads no está disponible.

Poniendolo como dice Zaelsius, ha bajado mucho, de un 60% de consumo a un 37% mas o menos, aunque me sigue pareciendo mucho, teniendo en cuenta que ni he puesto las texturas  ^_^'
Título: Re: Iphone opengl es
Publicado por: tamat en 16 de Marzo de 2010, 11:43:01 AM
no, si no lo digo por el triangles, lo digo por el strips!
Título: Re: Iphone opengl es
Publicado por: Pogacha en 16 de Marzo de 2010, 12:13:25 PM
http://www.gamedev.net/community/forums/topic.asp?topic_id=124594
Título: Re: Iphone opengl es
Publicado por: zunou en 16 de Marzo de 2010, 02:53:32 PM
Ok, usando triángulos baja un poco más, consume un 29/30%  pero sigue siendo mucho ¿no?
Título: Re: Iphone opengl es
Publicado por: tamat en 16 de Marzo de 2010, 04:08:20 PM
Cita de: Pogacha en 16 de Marzo de 2010, 12:13:25 PM
http://www.gamedev.net/community/forums/topic.asp?topic_id=124594
emmm, vale, si, se puede, pero es muy rebuscado >_<
Título: Re: Iphone opengl es
Publicado por: zunou en 17 de Marzo de 2010, 01:51:14 PM
Nada, sigo teniendo muy mal rendimiento he añadido las texturas y algún modelo más y casi llega a 60 otra vez, 30% para unos cuantos cubos es demasiado, algo tengo que estar haciendo mal.
Título: Re: Iphone opengl es
Publicado por: Prompt en 27 de Marzo de 2010, 12:56:56 PM
Me huelo 2 cosas:
- Estas verdaderamente usando un glDrawElements por objeto?
- Seguro que te estás cargando el BUS de datos, es decir, estás subiendo los vertices CADA VEZ q vas a pintar. USA VBO y glDrawArray.

Si es OGL 2.0, usa pseudo instancing. Pero vamos que estoy seguro que es lo 2º ¬¬. Habría que limpiar más aun el API xD