Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.08;
Скачать: CL | DM;

Вниз

низкие фпс в opengl   Найти похожие ветки 

 
Zo   (2006-08-14 18:45) [0]

День добрый, есть такая проблема с FPS в OGL приложении. Рисую 300 квадратов так:

 glActiveTextureARB(GL_TEXTURE0);
 t.Enable;
 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

 glActiveTextureARB(GL_TEXTURE1);
 t2.Enable;
 glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);

for I := 0 to 299 do
begin
glLoadIdentity();
glTranslated(ogl.Resolution.Width/2-640/2,ogl.Resolution.Height/2-480/2,-0);
DrawQuad(640,480,1,1);
end;

glActiveTextureARB(GL_TEXTURE1);
t.Disable;
glActiveTextureARB(GL_TEXTURE0);
t.Disable;


где t и t2 : TTexture;

procedure TTexture.Enable;
begin
 glEnable(GL_TEXTURE_2D);
 glBindTexture(GL_TEXTURE_2D, Texture_pointer);
end;

procedure TTexture.Disable;
begin
 glBindTexture(GL_TEXTURE_2D, 0);
 glDisable(GL_TEXTURE_2D);
end;


а вывод квадрата такой:
procedure DrawQuad(Width,Height : Single; TextureScaleX, TextureScaleY: Single);
begin
tc[0] := 0;
tc[1] := 0;

tc2[0] := TextureScaleY;
tc2[1] := 0;

tc3[0] := TextureScaleY;
tc3[1] := TextureScaleX;

tc4[0] := 0;
tc4[1] := TextureScaleX;    

  glBegin(GL_QUADS);

   glcolor4f(1.0,1.0,1.0,1.0);
   glMultiTexCoord2fvARB(GL_TEXTURE0, @tc4);
   glMultiTexCoord2fvARB(GL_TEXTURE1, @tc4);
   glVertex2f(0,0);

   glcolor4f(1.0,1.0,1.0,1.0);

   glMultiTexCoord2fvARB(GL_TEXTURE0, @tc);
   glMultiTexCoord2fvARB(GL_TEXTURE1, @tc);
   glVertex2f(0,Height);

   glcolor4f(1.0,1.0,1.0,1.0);

   glMultiTexCoord2fvARB(GL_TEXTURE0, @tc2);
   glMultiTexCoord2fvARB(GL_TEXTURE1, @tc2);
   glVertex2f(Width,Height);

   glcolor4f(1.0,1.0,1.0,1.0);

   glMultiTexCoord2fvARB(GL_TEXTURE0, @tc3);
   glMultiTexCoord2fvARB(GL_TEXTURE1, @tc3);
   glVertex2f(Width,0);
glEnd;

end;


Трабла в низких ФПС ~ 2-6, такие фпс сохраняются даже если отключить текстурирование вовсе. В чём может быть проблема?

p.s. драйвера последней версии


 
XProger ©   (2006-08-14 20:00) [1]

glLoadIdentity;
glTranslated(ogl.Resolution.Width/2-640/2,ogl.Resolution.Height/2-480/2,-0);
for I := 0 to 299 do
 DrawQuad(640,480,1,1);

А так?


 
RzCoDer ©   (2006-08-14 20:07) [2]

и так тоже самое


 
RzCoDer ©   (2006-08-14 20:08) [3]

от этого в обще мало фпс зависят


 
Zo   (2006-08-14 20:16) [4]


> XProger ©   (14.08.06 20:00) [1]

Нет, не помогло :(


 
Zo   (2006-08-14 20:21) [5]

если рисовать в обще без цикла то выходит примерно 270-280 FPS в оконном режиме, то есть всё равно не фонтан, это всего при 1 полигоне :(


 
ANTPro ©   (2006-08-14 20:27) [6]

Zo   (14.08.06 18:45)
Что должно быть нарисованно?

Сделай цикл без процедур
Вынеси констаты за цикл

получишь + к fps но не большой

Какое видео у тебя?


 
Zo   (2006-08-14 20:30) [7]


> ANTPro ©   (14.08.06 20:27) [6]

Должен быть нарисован прямоугольник с двумя текстурами
Цикл без процедур и константы за пределами не помогли совсем
Видео бюджетное ATI, однако другие ogl приложения работают куда быстрее, вот и пытаюсь понять в чём может быть дело


 
ANTPro ©   (2006-08-14 20:57) [8]

А где к стати у тебя BEGIN и END

ЗЫ: Рисовал почти также когда-то но 512000 полигонов
через glVertex3fv


 
ANTPro ©   (2006-08-14 21:01) [9]

ANTPro ©   (14.08.06 20:57) [8]
А где к стати у тебя BEGIN и END

Где ?


 
ANTPro ©   (2006-08-14 21:03) [10]

Поподробнее: Видео бюджетное ATI
Дай погладеть (тока запакуй)


 
XProger ©   (2006-08-15 01:14) [11]

Zo, если все 300 полигонов рисуются на всё окно - ничего удивительного в томозах нет, т.к. всё упирается в филлрейт :)


 
TButton ©   (2006-08-15 05:14) [12]

ну, если помножить 300 заполнений окна на 2-6 (в АС = 4) ФПС, то получается ~1200
что, в принципе, неплохой показатель. мне такого от канваса не добиться =)


 
Zo   (2006-08-15 13:19) [13]


> А где к стати у тебя BEGIN и END

Выше и ниже соответсвенно кода, я просто не стал и копировать
Я бы выложил, но мне некуда =(


> XProger ©   (15.08.06 01:14) [11]

Не на всё, окно 1024*768 в оконном режиме, если прямоугольники уменьшать то ФПС конечно прирастает, но всё равно держится в рамках <100 ФПС :(


 
Tsmar   (2006-08-15 16:13) [14]

Дружище, ты сможешь реально поднять скорость если воспользуешся такой схемой:

glBegin(GL_QUADS); //удали из DrawQuad

for I := 0 to 299 do
begin
glLoadIdentity();
glTranslated(ogl.Resolution.Width/2-640/2,ogl.Resolution.Height/2-480/2,-0);
DrawQuad(640,480,1,1);
end;

glEnd; //удали из DrawQuad


 
Tsmar   (2006-08-15 16:14) [15]

сори. граматика ни мой канек.


 
XProger ©   (2006-08-15 18:09) [16]

Tsmar, а если ещё и работу с матрицами вынесет за пределы цикла... ;)
Zo, FPS будет ниже частоты монитора до тех пор, пока не отключишь вертикальную синхронизацию (wglSwapIntervalEXT(0)). Низкий в твоём коде будет всегда, шустрее оно работать не будет.


 
Zo   (2006-08-16 09:53) [17]


> Tsmar   (15.08.06 16:13) [14]

Спасибо, попробую


> XProger ©   (15.08.06 18:09) [16]

Но при пустом экране, в минимальном opengl приложении, с малым разрешением (100*100) выходит и по несколько тысяч фпс


 
Zo   (2006-08-16 17:55) [18]


> Tsmar   (15.08.06 16:14) [15]

Нет, может пару фпс из сотни и выйграл, но при 6-8 фсах прироста нету



Страницы: 1 вся ветка

Текущий архив: 2007.07.08;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.021 c
8-1160420739
Nic
2006-10-09 23:05
2007.07.08
Получить угол


2-1181928234
alpha5
2007-06-15 21:23
2007.07.08
Как показать форму аналогично PopupMenu


2-1181924542
Первокласник Вася
2007-06-15 20:22
2007.07.08
Размер формы


9-1156461208
Tar[OFF]
2006-08-25 03:13
2007.07.08
Per_Pixel Lighting


15-1181237054
vch
2007-06-07 21:24
2007.07.08
В два раза больше - можно?