Шустрый

Профиль
Группа: Участник
Сообщений: 62
Регистрация: 18.7.2008
Репутация: нет Всего: нет
|
Кто мне объяснит? Рисую полигоны 6 на 6 в виде пола, домик 2 на 1 полигон. Пытаюсь перемещаться клавишами вперед- назад, влево- вправо- у меня на компьютере 2,2 Гг Пентиум 256 Мб видео- 1000 кадров в секунду (я поставил подсчет кадров), кроме того на клавши вперд- назад у меня есть sin, cos для выяснения позиции, куда перемещаться. На компьютере 2,5 Целерон 64 Мб видео- 100 кадров в секунду и тормозит при этом немного. Пробую вобще на слабеньком 233 Мг Пентиуме 3-10 кадров в секунду- тормозит до невозможности. И казалось бы простая программуля всего- то пару полигонов прорисовываеться в цикле (координаты полигонов взяты из текстового файла, он грузиться перед началом работы программы), а тормозит на других компьютерах. В чем дело? Вот код функции рисования: | Код | int DrawGLScene(GLvoid) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity();
glTranslatef(0.0f,0.0f,-1.0f); //====================================== CalculateFrameRate(); glDisable(GL_TEXTURE_2D); glColor3ub(255,255,0); glRasterPos2f(-0.51f, 0.36f); glPrint("FPS %5.2f",FPS); glEnable(GL_TEXTURE_2D); //glColor3ub(255,255,255);
//================================================== //Перемещаем вид glTranslatef(0.0f,0.0f,1.0f); GLfloat x_m, y_m, z_m, u_m, v_m; GLfloat xtrans = -xpos; GLfloat ztrans = -zpos; GLfloat ytrans = -walkbias-0.25f; GLfloat sceneroty = 360.0f - yrot;
int numtriangles;
glRotatef(lookupdown,1.0f,0,0); glRotatef(sceneroty,0,1.0f,0);
glTranslatef(xtrans, -0.5, ztrans); //glTranslatef(xtrans, ytrans, ztrans);
//================================================ //Рисуем пол
glBindTexture(GL_TEXTURE_2D, texture[0]);
numtriangles = sector1.numtriangles; // Process Each Triangle for (int loop_m = 0; loop_m < numtriangles; loop_m++) { glBegin(GL_QUADS); glNormal3f( 0.0f, 0.0f, 1.0f); //glColor4f(1.0f,0.0f,0.0f,1.0f); x_m = sector1.triangle[loop_m].vertex[0].x; y_m = sector1.triangle[loop_m].vertex[0].y; z_m = sector1.triangle[loop_m].vertex[0].z; u_m = sector1.triangle[loop_m].vertex[0].u; v_m = sector1.triangle[loop_m].vertex[0].v; glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m); //glColor4f(0.0f,1.0f,0.0f,1.0f); x_m = sector1.triangle[loop_m].vertex[1].x; y_m = sector1.triangle[loop_m].vertex[1].y; z_m = sector1.triangle[loop_m].vertex[1].z; u_m = sector1.triangle[loop_m].vertex[1].u; v_m = sector1.triangle[loop_m].vertex[1].v; glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m); //glColor4f(0.0f,0.0f,1.0f,1.0f); x_m = sector1.triangle[loop_m].vertex[2].x; y_m = sector1.triangle[loop_m].vertex[2].y; z_m = sector1.triangle[loop_m].vertex[2].z; u_m = sector1.triangle[loop_m].vertex[2].u; v_m = sector1.triangle[loop_m].vertex[2].v; glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m);
//glColor4f(1.0f,1.0f,1.0f,1.0f); x_m = sector1.triangle[loop_m].vertex[3].x; y_m = sector1.triangle[loop_m].vertex[3].y; z_m = sector1.triangle[loop_m].vertex[3].z; u_m = sector1.triangle[loop_m].vertex[3].u; v_m = sector1.triangle[loop_m].vertex[3].v; glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m);
glEnd();
} //================================================ //Рисуем домик
int numtexthouse;
glBindTexture(GL_TEXTURE_2D, texture[1]);
numtexthouse = sector2.numtriangles; // Process Each Triangle for (loop_m = 0; loop_m < numtexthouse; loop_m++) { glBegin(GL_QUADS); x_m = sector2.triangle[loop_m].vertex[0].x; y_m = sector2.triangle[loop_m].vertex[0].y; z_m = sector2.triangle[loop_m].vertex[0].z; u_m = sector2.triangle[loop_m].vertex[0].u; v_m = sector2.triangle[loop_m].vertex[0].v; glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m); x_m = sector2.triangle[loop_m].vertex[1].x; y_m = sector2.triangle[loop_m].vertex[1].y; z_m = sector2.triangle[loop_m].vertex[1].z; u_m = sector2.triangle[loop_m].vertex[1].u; v_m = sector2.triangle[loop_m].vertex[1].v; glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m); x_m = sector2.triangle[loop_m].vertex[2].x; y_m = sector2.triangle[loop_m].vertex[2].y; z_m = sector2.triangle[loop_m].vertex[2].z; u_m = sector2.triangle[loop_m].vertex[2].u; v_m = sector2.triangle[loop_m].vertex[2].v; glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m);
x_m = sector2.triangle[loop_m].vertex[3].x; y_m = sector2.triangle[loop_m].vertex[3].y; z_m = sector2.triangle[loop_m].vertex[3].z; u_m = sector2.triangle[loop_m].vertex[3].u; v_m = sector2.triangle[loop_m].vertex[3].v; glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m);
glEnd();
} //=============================================== //Рисуем дерево из двух одинаковых текстур перехрещеных под 90 градусов
glBindTexture(GL_TEXTURE_2D,texName); glPushMatrix(); glTranslatef(5.5, 0, 0.5);
glRotatef(45,0.0,1.0,0.0);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glCallList(listNum);
//Позиционируем вторую половину дерева и рисуем ее glRotatef(-90,0.0,1.0,0.0);
glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glCallList(listNum);
glPopMatrix();
return TRUE; // Everything Went OK }
|
|