Foros - Stratos

Programadores => Programación gráfica => Mensaje iniciado por: AGONY en 22 de Julio de 2003, 01:24:33 AM

Título: Ejemplo De Codigo Usando Vertex Array
Publicado por: AGONY en 22 de Julio de 2003, 01:24:33 AM
 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)  
Título: Ejemplo De Codigo Usando Vertex Array
Publicado por: AgeR en 22 de Julio de 2003, 09:12:40 AM
 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!
Título: Ejemplo De Codigo Usando Vertex Array
Publicado por: tiutiu en 22 de Julio de 2003, 10:03:07 AM
 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
Título: Ejemplo De Codigo Usando Vertex Array
Publicado por: AGONY en 22 de Julio de 2003, 10:47:37 PM
 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.