Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Ejemplo De Codigo Usando Vertex Array

Iniciado por AGONY, 22 de Julio de 2003, 01:24:33 AM

« anterior - próximo »

AGONY

 Tengo este ejemplo usando GL_EXT_compiled_vertex_array:

Size = 3 * sizeof(struct Vertice);

wglAllocateMemoryNV = (PFNWGLALLOCATEMEMORYNVPROC)wglGetProcAddress("wglAllocateMemoryNV");
glLockArraysEXT = (PFNGLLOCKARRAYSEXTPROC)wglGetProcAddress("glLockArraysEXT");
glUnlockArraysEXT = (PFNGLUNLOCKARRAYSEXTPROC)wglGetProcAddress("glUnlockArraysEXT");

VA = (struct Vertice *)wglAllocateMemoryNV(3 * sizeof(struct Vertice),0,0,1);

if (!VA)
{
   MessageBox(NULL, "No hay memoria", "Error", MB_OK);
   return FALSE;
}

VA[0].x = 0.0f;
VA[0].y = 1.0f;
VA[0].z = 0.0f;
VA[1].x = -1.0f;
VA[1].y = -1.0f;
VA[1].z = 0.0f;
VA[2].x = 1.0f;
VA[2].y = -1.0f;
VA[2].z = 0.0f;

glNewList(1,GL_COMPILE);
   glTranslatef(-1.0f,0.0f,-6.0f);
   glEnableClientState(GL_VERTEX_ARRAY);
   glVertexPointer(3,GL_FLOAT,0,VA);
   glLockArraysEXT(0,Size);
   glDrawArrays(GL_TRIANGLES,0,3);
   glUnlockArraysEXT();
glEndList();

Este codigo muestra un triangulo, mi problema esta en que los FPS que obtengo esta entre 60-61 una leve mejora pero no mucha la verdad he pensado que es porque solo dibujo un triangulo, pero deberia de ir mas rapido igualmente si alguien me puede decir si estoy haciendo algo mal se lo agradezco.  (nooo)  

AgeR

 Mientras alguien que sepa más de OpenGL se pase por aquí, digo yo que igual es por la frecuencia de refresco del monitor (lo estás ejecutando a pantalla completa?).

Hay algún post de no hace mucho en el que se habla del tema si no recuerdo mal, también usando OpenGL. Igual te soluciona el tema.

Aquí tienes el hilo donde se habla del tema :
Calcular Frames por segundo

Venga pues!

tiutiu

 Si, ya se hablo del tema hace no mucho. Prueba a renderizar 10.000 triangulos a ver q tal. Un triangulo al opengl se la suda. No son los fps sino el frametime. Si un frame con un triangulo le cuesta 0.02 segundos de hacerlo, imagina q el renderizado le cuesta 0.01 (pongamos q la mitad del frame se usa en renderizar) y q el vertex array este da un rendimiento del 20% mas, con lo cual empleara 0.002 segundos menos en renderizar, asi q el frametime se t queda en 0.018. Si pillas la calculadora, simplemente t sale una ganancia de 5.5 fps.

Pues haz lo q t digo, mete a renderizar 10.000 tris y veras el rendimiento, y si no t convence ponle 60.000 y lo veras mejor. Recuerda, los fps no importan, el frametime si.

EDIT: se me acaba d ocurrir otra idea d medir el rendimiento. En vez d calcular los fps, calcula el tiempo q le cuesta obtener X frames, por ejemplo 3.000 frames. Ahi se supone q se deberia ver el rendimiento. No lo he pensado mucho rato, asi q quizas no sea tan wena idea xDD
b>:: Pandora's Box project ::
Notas e ideas sobre desarrollo de engines para juegos

AGONY

 He puesto mi monitor a 85hz para hacer una prueba y me parece que ha ido peor, ahora intentare hacer lo del render de muchos triangulos.






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.