Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Drawprimitive Vs Drawprimitiveup

Iniciado por zupervaca, 18 de Febrero de 2005, 06:36:36 PM

« anterior - próximo »

zupervaca

 Buenas a todos, siempre he tenido una duda y es que al usar los UP (con o sin indices) con mi gforce2 16mb cutre o con la ati radeon 7500 me va mas rapido que sin usar las funciones UP, ¿alguien sabe si pasa con todas las tarjetas graficas?


Estadisticas para que os hagais una idea de la diferencia que os digo (que es brutal):

- 4 vertices y uso trianglestrip
- Uso multitextura de un solo pase

· Con un for de 100 DrawPrimitive los FPS se me quedan en 10
· Con un for de 10.000!! DrawPrimitiveUP los FPS se me quedan en 75!!

Supuestamente con UP los vertices los tiene que subir cuando llamo a esta función y con la otra ya los ha subido o no dependiendo donde los metiera las directx en ese momento con la funcion SetStreamSource, ademas esta funcion no la llamo dentro del for, dentro del for solo llamo a las de dibujado

¿¿Alguien me puede aclarar el jari esti??

Haddd

 Sin ver el código es difícil que te pueda decir más cosas. En principio, cometes algún tipo de error. De todas formas esa no es una prueba "logica" porque 4 vértices no se mandan a la tarjeta casi nunca.

zupervaca

 es que el codigo es lo mas simple que hay es un for como decia

for( int i = 0; i < 100; i++ )
{
   m_pDevice->DrawPrimitiveUP( D3DPT_TRIANGLESTRIP, 1, g_pVertexBuffer, sizeof(Vertex) );
   //m_pDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 2 );
}

Es intercambiar la linea del comentario para ver el gran aumento de FPS

¿En el motor de C# que hicisteis cualas usais para renderizar?

Haddd

 Nosotros siempre utilizamos DrawIndexedPrimitive, aunque alguna vez le damos también al UP, pero son casos muy concretos.

Bueno, yo me refiero a que quizás tu estés generando el vertex buffer en memoria RAM y por tanto el sistema tiene que copiarlo a memoria de vídeo. Quizás en ese caso utilizar UP es más ventajoso, puesto que debe estar bastante optimizado.

Pero bueno, que es lógico que si los vértices YA están en memoria de vídeo tiene que ser muuucho más rápido el DrawPrimitive. No te pelees con eso porque es así. Mira a ver si lo estás haciendo mal desde el principio, y estás creando los vértices por software.

_Grey

 Seguramente tenga que ver como creas el vertexbuffer, de todas formas lo que ganas con el DrawXXXPrimitive() frente al DrawXXXPrimitiveUP() puede ser muy poquito, recuerdo cuando lo trato Loover en su motor y era bien poquito.

Saludos.

zupervaca

 si me parece que es rayadura de esta gforce cutre ya que en otro ordenador con gforce4 ya va bien, la verdad es que no gano pa sustos con las tarjetas graficas por que con la otra ati 7500 que tengo tuve el jari de las texturas y ahora con esta esto otro  (nooo)

zupervaca

 despues de probarlo en la gforce4 efectivamente se gana poquisimo, en el motor gano apenas 2-5fps


Loover

 Yo estuve haciendo pruebas intesivamente entre DrawIndexedPrimitive y DrawPrimitiveUp para el dibujo de primitivas gráficas (círculos, lineas, rectas, polígonos, etc) y no encontré apenas diferencia.

http://www.stratos-ad.com/forums/index.php...drawprimitiveup
IndieLib Libreria 2.5d utilizando aceleración por hardware para la programación de juegos 2d.
Indie Rover The monkeys are reading!






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.