OpenGl
|
Basilcat
Сообщения: n/a |
Может кто подскажет решение проблемы по быстрому выводу графики под OPENGL на машинах типа 500Мгц с видеокартой 2МБ. Конечно на 1000 Селероне всё летает класс, а вот на старых дёргается и зависает. Проверил время цикла вывода, 40 милисекунд (25 кадров/сек), но реально идёт перерисовка на экране страшно медленно, что это инерция экрана ЖК или карточка и что делать?
Кусок кода вывода: procedure TDrawPicture.WMPaint(var Msg: TWMPaint); var k,i : integer; cadr:TCadr; t: integer; begin if (fprogr<>nil) then begin {*********} t := GetTickCount; {*********} wglMakeCurrent(dc, hrc); BeginPaint (handleGL, ps); // äëÿ áîëåå óñòîé÷èâîé ðàáîòû glEnable(GL_SCISSOR_TEST); // âêëþ÷àåì ðåæèì èñïîëüçîâàíèÿ âûðåçêè. glScissor(0, 0, round(ClientWidth), ClientHeight); // îáëàñòü âûðåçêè glClearColor (0.7, 0.7, 0.7, 1); glClear (GL_COLOR_BUFFER_BIT); if (isPoint) then begin glPointSize(5); glEnable(GL_POINT_SMOOTH); end; lineWidth:=3; lineWidthOld:=1; glLineWidth(1); glPushMatrix; glTranslated(fposGl.x,fposGl.y,0); glScalef(scale*mx, scale*my,0); if (fprogr.isDrawSheet or fprogr.isDrawSheetContur) then DrawBorder(false); if (fprogr.IsCompile)and(fprogr.cadrsOut.Count>0) then begin if (fprogr.isDrawBorderProgr) then DrawBorderProgr; end; if (fprogr.isDrawSheet or fprogr.isDrawSheetContur) then DrawBorder(true); if (fprogr.IsCompile)and(fprogr.cadrsOut.Count>0) then begin colorNew:=1; glPushMatrix; glTranslated(FXYStart.x,FXYStart.y,0); colorRGBPlazmaOn.r:=0.7; colorRGBPlazmaOn.g:=0; colorRGBPlazmaOn.b:=0; colorRGBFast.r:=0; colorRGBFast.g:=1; colorRGBFast.b:=0; colorRGBPlazmaOff.r:=0; colorRGBPlazmaOff.g:=0; colorRGBPlazmaOff.b:=0; colorRGB:=colorRGBPlazmaOff; if fprogr.isDrawContur then DrawCadrs(false, fprogr.cadrsOut); colorRGBPlazmaOn.r:=1; colorRGBPlazmaOn.g:=0; colorRGBPlazmaOn.b:=0; colorRGBFast.r:=0.2; colorRGBFast.g:=1; colorRGBFast.b:=0.5; colorRGBPlazmaOff.r:=0.1; colorRGBPlazmaOff.g:=0.3; colorRGBPlazmaOff.b:=1; colorRGB:=colorRGBPlazmaOff; if ((fprogr.isEkivdOld<>0)or(not fprogr.isDrawContur))and fprogr.isDrawEkvid then begin DrawCadrs(true,fprogr.cadrsOutEkvid); if fprogr.isDrawStartCadr then with tcadr(fprogr.cadrsOutEkvid[fprogr.cadrsOutEkvid.FigureIndex]) do begin glLineWidth(2); glEnable(GL_LINE_SMOOTH); glColor3f(0,0,1); glBegin(GL_LINES); glVertex2f(X0,Y0); glVertex2f(X0-0.075/scale,Y0); glVertex2f(X0,Y0); glVertex2f(X0+0.075/scale,Y0); glVertex2f(X0,Y0); glVertex2f(X0,Y0+0.075/scale); glVertex2f(X0,Y0); glVertex2f(X0,Y0-0.075/scale); glEnd; glDisable(GL_LINE_SMOOTH); glLineWidth(1); end; end; glBegin(GL_LINE_STRIP); glVertex2f(fprogr.Xbeg,fprogr.YBeg); glVertex2f(fprogr.XEnd,fprogr.YEnd); glEnd; glPopMatrix; end; glLineWidth(2); glColor3f(0,0,1); if (isRezak ) then begin glTranslated(FPosRezak.X,FPosRezak.y,0); glBegin(GL_LINES); glVertex2f(0,0); glVertex2f(0.1/(fscaleGl),0); glVertex2f(0,0); glVertex2f(0,0.1/(fscaleGl)); glVertex2f(0,0); glVertex2f(-0.1/(fscaleGl),0); glVertex2f(0,0); glVertex2f(0,-0.1/(fscaleGl)); glEnd; end; glLineWidth(1); glPopMatrix; glFlush; swapBuffers(dc); wglMakeCurrent(0, 0); glDisable(GL_POINT_SMOOTH); glDisable(GL_SCISSOR_TEST); // âêëþ÷àåì ðåæèì èñïîëüçîâàíèÿ âûðåçêè. EndPaint (handleGL, ps); {**************} Form_Aplication.Label42.caption := IntToStr(GetTickCount - t)+'ìñ; Ìàõ:'+IntToStr(max(T_New,GetTickCount - t))+'ìñ; '+IntToStr(Round(1000/(GetTickCount - t)))+'ê/ñ; '+IntToStr(Round(1000/max(T_New,GetTickCount - t)))+'ê/ñ; '; Inc(j_T_New); if j_T_New>50 then begin j_T_New:=0; T_New:=0; end; T_New:=max(T_New,GetTickCount - t); {**************} end end;//---TDrawPicture.Paint;--- [s]Исправлено: hasherfrog, 13:36 3-08-2004[/s] |
|
Отправлено: 13:31, 03-08-2004 |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Цитата:
|
|
Отправлено: 17:32, 03-08-2004 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старый параноик Сообщения: 2423
|
Профиль | Отправить PM | Цитировать Часть диалога велась по mail-переписке.
Мы договорились, что драйвера нормальные. Значит, дело в программе. Для меня всё усложняется тем. что Вы используете Delphi. На мой взгляд, это тяжкое испытание. Я благополучно всё делал в чистом Win32, ну MFC, в крайнем случае. Хочу предложить Вам пролистать: http://www.opengl.org/resources/faq/.../mswindows.htm http://www.opengl.org/resources/faq/...al/mslinks.htm По дельфи + openGl информации в сети значительно меньше. |
Отправлено: 15:50, 04-08-2004 | #3 |
Сообщения: 196
|
Профиль | Сайт | Отправить PM | Цитировать Хехе 25 фпс на openGL Криво пишите видать, мой движок на директе 85 выдает как с куста. Хотя 2 мега видео маловато...ни одна ноормальная современная игра не пойдет на таком железе.
|
Отправлено: 12:40, 07-08-2004 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Вышел OpenGL 3! | Coutty | Новости информационных технологий | 4 | 26-08-2007 14:18 | |
FreeBSD and OpenGL | Guest | Общий по FreeBSD | 14 | 16-11-2005 17:26 | |
OpenGL | Guest | Хочу все знать | 2 | 18-08-2004 08:25 | |
Где взять OpenGL 1.4.0 | UTU | Хочу все знать | 5 | 10-02-2004 13:15 | |
OpenGL | derotizator | Хочу все знать | 7 | 25-11-2003 10:58 |
|