LINUX.ORG.RU

Попробуйте откомпилить у себя


0

0

Странная вещь: во всех моих проектах на OpenGL FPS периодически падает до 10. Все значения FPS < 20 пишутся в консоль. Посмотрите, у вас такое будет или нет.

Компиляция: gcc file.c -o file -lGL -lGLU -lglut -lX11 -lXmu -lXt -lSM -lICE -lXext -lXi -lm -L/usr/X11R6/include -L/usr/X11R6/lib -O2


#include <GL/glut.h>
#include <sys/time.h>

void resize(int width,int height)
{
glViewport(0,0,width,height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-5.0,5.0, -5.0,5.0, 0.1,100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt( 0,0,15, 0,0,0, 0,1,0 );
}

int w=400, h=400;
char buf[80];
int frames=0;
struct timeval t1, t2;
struct timezone tz = {0, 0};
void printstring(int x, int y, char *s)
{
glDisable(GL_DEPTH_TEST);
glDisable(GL_LIGHTING);
glDisable(GL_TEXTURE_2D);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0.0, (double)w, 0.0, (double)h, -1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
glColor4ub(255, 255, 255, 100);
glRasterPos2i(x, y);
int i, sl=strlen(s);
for(i = 0; i < sl; i++)
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, s[i]);

glMatrixMode(GL_MODELVIEW);
glPopMatrix();
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_TEXTURE_2D);
}

void display(void)
{
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
glColor3f(1.0, 0.0, 0.0);
glutWireSphere(2.0, 10, 10);

frames++;
gettimeofday(&t2, &tz);
printstring(5, 5, buf);
if (frames==10)
{
float seconds = (float)t2.tv_sec + (float)t2.tv_usec*0.000001 - (float)t1.tv_sec - (float)t1.tv_usec*0.000001;
if (seconds < 0) seconds *= -1.0;
sprintf(buf, "FPS: %G", frames/seconds);
if(frames/seconds < 20.0) printf("%G\n", frames/seconds);
gettimeofday(&t1, &tz);
frames = 0;
}
glutSwapBuffers();

}



int main(int argc,char **argv)
{
float position[4] = {3.0, 4.0, 3.0, 1.0};

glutInit(&argc,argv);

glutInitWindowPosition(0, 0);
glutInitWindowSize(500, 500);
glutInitDisplayMode( GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE );
glutCreateWindow(argv[0]);
glutDisplayFunc(display);
glutIdleFunc(display);
glutReshapeFunc(resize);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_COLOR_MATERIAL);
glLightfv(GL_LIGHT0, GL_POSITION, position);
gettimeofday(&t1, &tz);
glutMainLoop();
}


У меня все нормально. ФПС держиться около 300.

pisun
()

<offtopic> Где взять glut.h? </offtopic>

anonymous
()

Странно, у меня тоже 10FPS.
AMD64, Nvidia fx5500, debian-amd64. (pure-64)
glxgears~2000fps выдаёт.

vahvarh ★★★
()
Ответ на: комментарий от unDEFER

Кстати при полной загрузке процессора (при компиляции) как раз 9-10 К/с получается

unDEFER ★★★★★
()

Около 400 FPS.

Athlon XP 1500+, nVIDIA GeForce2 MX400, nvidia driver 1.0.5336.

Провалов не заметил.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.