Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Iphone opengl es

Iniciado por zunou, 15 de Marzo de 2010, 04:37:54 PM

« anterior - próximo »

zunou

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!

Zaelsius

#1
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);

tamat

ademas como demonios pintas cubos con triangle strips?
Por un stratos menos tenso

zunou

 :-[ 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  ^_^'

tamat

no, si no lo digo por el triangles, lo digo por el strips!
Por un stratos menos tenso


zunou

Ok, usando triángulos baja un poco más, consume un 29/30%  pero sigue siendo mucho ¿no?

tamat

Por un stratos menos tenso

zunou

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.

Prompt

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






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.