|
3D-программирование Вопросы, касающиеся программирования 3D мира |
11.10.2005, 15:14
|
#1
|
Нуждающийся
Регистрация: 11.09.2005
Сообщений: 92
Написано 0 полезных сообщений (для 0 пользователей)
|
У меня есть вопрос...или предложение...Короче говоря я хочу чтобы здесь написали соотношение полигонов с ФПС, допустим если у меня в кадре 3000 полигонов, а ФПС 22 - значит что-то не то, а если около 10000?
|
(Offline)
|
|
11.10.2005, 15:44
|
#2
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Не знаю, от видеокарты с ёё дровишками зависит, от разрешения, от текстур, от сурфейсов и количества обьектов... да мало ли...
А вообще, по идее на рендеринг 10000 полигонов уйдет [u]порядка[u] 10мс, так что ФПС будет пару сотен...
А вообще- ответить нельзя в принципе. Только имперически:
Graphics3D 800,600,32,1
SetBuffer BackBuffer()
Cam=CreateCamera()
MoveEntity Cam,0,0,-10
Mesh=CreateMesh()
For q=0 To 1000
Cube=CreateCube()
AddMesh Cube,Mesh
FreeEntity Cube
Next
While Not KeyHit(1)
If M<MilliSecs() Then
M=MilliSecs()+1000
MaxFPS=FPS
FPS=0
Else
FPS=FPS+1
EndIf
RenderWorld()
Text 10,10,"Triangles: "+TrisRendered()
Text 10,20,"FPS: "+MaxFPS
Flip(0)
Wend
End
Проверился сам: на 12х1000 нетекстуреных полигонов у меня 165 ФПС...
|
(Offline)
|
|
11.10.2005, 22:13
|
#3
|
|
соотношения имхо несуществует
|
|
|
12.10.2005, 00:33
|
#4
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Ну, зависимость вот она. /запускаем тест и ждем результатов/
Только роль она играет в падении быстродействия явно не критическую...
Graphics3D 800,600,32,1
SetBuffer BackBuffer()
Cam=CreateCamera()
MoveEntity Cam,0,0,-10
For q=1 To 8
Sun=CreateLight(1)
TurnEntity Sun,Rnd(360),Rnd(360),Rnd(360)
LightColor Sun,Rnd(500)-250,Rnd(500)-250,Rnd(500)-250
Next
Dim FPSInfo(800)
Mesh=CreateMesh()
While Info<800 And KeyHit(1)=0
FPS=FPS+1
If M<MilliSecs() Then
M=MilliSecs()+100
MaxFPS=FPS*10
FPS=0
FPSInfo(Info)=MaxFPS
Info=Info+4
For q=1 To 10
Cube=CreateCube()
PositionMesh Cube,Rnd(6)-3,Rnd(6)-3,Rnd(6)-3
RotateMesh Cube,Rnd(360),Rnd(360),Rnd(360)
AddMesh Cube,Mesh
FreeEntity Cube
Next
EndIf
RenderWorld()
Text 10,10,"Steps left: "+(800-Info)
Text 10,20,"FPS: "+MaxFPS
Text 10,30,"Tris: "+TrisRendered()
Text 10,45,"Press [Esc] to terminate"
Flip(0)
Wend
Cls
Print "FPS statistics:"
Color 255,0,0
For q=0 To 800
Rect q,600-FPSInfo(q)/4,3,FPSInfo(q)/4
Next
Flip
WaitKey()
End
End
|
(Offline)
|
|
12.10.2005, 04:49
|
#5
|
Нуждающийся
Регистрация: 11.09.2005
Сообщений: 92
Написано 0 полезных сообщений (для 0 пользователей)
|
Originally posted by jimon@Oct 11 2005, 08:13 PM
соотношения имхо несуществует
|
2jimon ну ты же сам говорил, что при 5000 треугольниках не может у тебя быть ФПС 100
2diplomat пасибо!
|
(Offline)
|
|
12.10.2005, 08:43
|
#6
|
|
ето тоже самое fps=k*x+c
вот k и есть ета зависимость
а c ето щитай rand(-100,0)
такто прямой зависимости нету
|
|
|
12.10.2005, 13:19
|
#7
|
Дэвелопер
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений (для 164 пользователей)
|
Зависимость- нелинейная. Она экспотенциальная.
Т.е. ФПС=К/Х,
где К- таинственный коэ-фт, а Х- кол-во поликов.
И именно поэтому она (зависимость) не играет особой роли. Грубо говоря, с 3000ФПС до 2000ФПС падение произойдет даже при незначительном росте треугольников, но никто его не заметит, а вот чтоб уронить ФПС со скажем 40 до 20- понадобится повысить кол-во полигонов уже в разы, а этого почти всегда можно избежать...
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 23:16.
|