Форум: "Игры";
Текущий архив: 2007.07.08;
Скачать: [xml.tar.bz2];
Внизнизкие фпс в 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.043 c