|
3D-программирование Вопросы, касающиеся программирования 3D мира |
31.07.2008, 17:52
|
#1
|
ПроЭктировщик
Регистрация: 13.06.2008
Сообщений: 131
Написано 30 полезных сообщений (для 61 пользователей)
|
спрайты
на экране 50*50 спрайтов плюс столько же на их тени. тоесть всего 2*50*50 и еще плюс 50*50 скрытых спрайтов (но они фпс и не едят)
все это копии от еще 6 разноцветных спрятанных спрайтов.
как можно повысить фпс?
|
(Offline)
|
|
31.07.2008, 17:54
|
#2
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: спрайты
Сделать их синглсурфейсными.
Прирост до 1000%
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
31.07.2008, 22:03
|
#3
|
Разработчик
Регистрация: 09.12.2007
Сообщений: 376
Написано 83 полезных сообщений (для 122 пользователей)
|
Ответ: спрайты
Сообщение от NoNsense
на экране 50*50 спрайтов плюс столько же на их тени. тоесть всего 2*50*50 и еще плюс 50*50 скрытых спрайтов (но они фпс и не едят)
все это копии от еще 6 разноцветных спрятанных спрайтов.
как можно повысить фпс?
|
Смотря что это за спрайты, если это трава то одно дело, если выстрелы - другое.
|
(Offline)
|
|
01.08.2008, 12:28
|
#4
|
ПроЭктировщик
Регистрация: 13.06.2008
Сообщений: 131
Написано 30 полезных сообщений (для 61 пользователей)
|
Ответ: спрайты
собственно спрайты - это кнопки, с тенями.
и если я их сделаю односурфейсными то я так понимаю пикать их каждую отдельно будет уже нельзя?
а пикать их необходимо, потому что программно рассчитывать (в каком регионе мышь) практически нереально - плоскость кнопок под углом к камере (плюс перспектива) , и количество кнопок варируется. Getcolor тоже не поможет - спрайт кнопки не однотонный.
когда кнопка нажимается, она удаляется (и кнопки рядом сходного цвета).
|
(Offline)
|
|
01.08.2008, 12:37
|
#5
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: спрайты
NoNsense, еще одно усилие и можно придумать пикуемые кнопки (отдельные элементы, скрытые) и отдельно их односюрфейсное представление.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
01.08.2008, 12:51
|
#6
|
ПроЭктировщик
Регистрация: 13.06.2008
Сообщений: 131
Написано 30 полезных сообщений (для 61 пользователей)
|
Ответ: спрайты
повысит ли это фпс? вроде объекты с 0 альфой тоже его едят (50*50 по крайней мере).
и еще - элементы с 0 альфой станут мерцать, если я потом привяжу рендер к фпс.
хм, кстати - пивотам можно делать ентитирадиус и пикать их?
(сорри за простой вопрос, просто не могу сию минуту проверить сам - не за своим компом )
Последний раз редактировалось NoNsense, 01.08.2008 в 12:57.
|
(Offline)
|
|
01.08.2008, 13:03
|
#7
|
Дэвелопер
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений (для 110 пользователей)
|
Ответ: спрайты
Сообщение от NoNsense
а пикать их необходимо, потому что программно рассчитывать (в каком регионе мышь) практически нереально - плоскость кнопок под углом к камере (плюс перспектива) , и количество кнопок варируется.
|
А блиц как считает, по-твоему? Аппаратно?
|
(Offline)
|
|
01.08.2008, 13:17
|
#8
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: спрайты
пивотам можно. вот я набросал пример:
http://www.forum.likosoft.ru/showthr...?p=238#post238
на моей рабочей машине - сильный проц слабая видюзу удалось поднять фпс незныительно 10-20, на машинах со слабым процом но мощной видюхой должно быть изминение лучше заметно.
|
(Offline)
|
|
02.08.2008, 08:49
|
#9
|
ПроЭктировщик
Регистрация: 13.06.2008
Сообщений: 131
Написано 30 полезных сообщений (для 61 пользователей)
|
Ответ: спрайты
HolyDel, сенкс, за пример.
только вот незначительный прирост фпс, озадачивает.
еще была идея сделать два плайна и по ним рисовать брашем на одном кнопки, на другом тени, пикать пивоты и перераскрашивать плайн. только код весь придется переписывать с нуля.
или еще попробовать тени объеденить с самими кнопками в синглурфейсы.
кстати снижение фпс только из за колличества объектов или и из-за того что их можно пикать?
|
(Offline)
|
|
02.08.2008, 12:57
|
#10
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: спрайты
ну... эт на рабочей машине небольшой, а на домашней удалось доднять с 60 до (180-220)
|
(Offline)
|
|
02.08.2008, 16:05
|
#11
|
ПроЭктировщик
Регистрация: 13.06.2008
Сообщений: 131
Написано 30 полезных сообщений (для 61 пользователей)
|
Ответ: спрайты
вобщем попробую
|
(Offline)
|
|
02.08.2008, 16:48
|
#12
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: спрайты
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо tormoz за это полезное сообщение:
|
|
03.08.2008, 19:50
|
#13
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: спрайты
еще один вариант. Сделал чтобы можно было пикать по спрайтам в одном сурфейсе.
Graphics3D 800, 600, 32, 2
SetBuffer BackBuffer()
SeedRnd MilliSecs()
cam = CreateCamera()
PositionEntity( cam, 0, 0, -10 )
InitSpriteSystem()
addSprite("left",-2)
addSprite("right",2)
Global pickedSprite.Sprite
While Not KeyHit(1)
mx = MouseX()
my = MouseY()
MHleft = MouseHit(1)
If MHleft=1 Then
pick = CameraPick(cam, mx, my)
If pick <> 0 Then
tri = PickedTriangle()
pickedSprite = Object.Sprite(FindSprite( tri ))
Else
pickedSprite = Null
EndIf
EndIf
RenderWorld()
If pickedSprite<> Null Then
CameraProject(cam, pickedSprite\x, pickedSprite\y, pickedSprite\z)
Text( ProjectedX(), ProjectedY(), pickedSprite\name )
EndIf
Flip
Wend
Type Sprite
Field tri[2], vertex
Field name$
Field x#, y#, z#
End Type
Global SSmesh, SSsurf
Function InitSpriteSystem()
SSmesh = CreateMesh()
SSsurf = CreateSurface(SSmesh)
EntityPickMode( SSmesh, 2 )
End Function
Function addSprite(name$, x#=0, y#=0, z#=0)
Local SS.Sprite = New Sprite
SS\x = x : SS\y = y : SS\z = z
SS\vertex = AddVertex(SSsurf, SS\x-1, SS\y+1, SS\z+0, 0, 0)
AddVertex(SSsurf, SS\x+1, SS\y+1, SS\z+0, 1, 0)
AddVertex(SSsurf, SS\x+1, SS\y-1, SS\z+0, 1, 1)
AddVertex(SSsurf, SS\x-1, SS\y-1, SS\z+0, 0, 1)
SS\tri[0] = AddTriangle(SSsurf, SS\vertex, SS\vertex+1, SS\vertex+2)
SS\tri[1] = AddTriangle(SSsurf, SS\vertex, SS\vertex+2, SS\vertex+3)
SS\name = name
End Function
Function FindSprite( tri )
Local SS.Sprite
For SS.Sprite = Each Sprite
For n = 0 To 1
If tri = SS\tri[n] Then Return Handle(SS)
Next
Next
Return -1
End Function
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
04.08.2008, 13:28
|
#14
|
ПроЭктировщик
Регистрация: 13.06.2008
Сообщений: 131
Написано 30 полезных сообщений (для 61 пользователей)
|
Ответ: спрайты
как-то глухо, получается но не то что надо
не могу понять как объединяются загружаемые спрайты.
вобщем как мне связать в одну поверхность два спрайта такого типа:
ghost=loadsprite("...путь...")
sprite1=copyentity(ghost)
sprite2=copyentity(ghost)
positionentity sprite1,100,0,0
positionentity sprite2,-100,0,0
и еще - я так понял что после добавления они упадут в одни координаты,
их до добавления надо именовать, а после добавления растаскивать?
Последний раз редактировалось NoNsense, 04.08.2008 в 13:48.
|
(Offline)
|
|
04.08.2008, 19:03
|
#15
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: спрайты
mesh = CreateMesh()
ghost=loadsprite("...путь...")
positionentity ghost,0,-100000,0
HideEntity(ghost)
sp1 = CopyMesh(ghost)
PositionMesh(sp1, x, y, z)
AddMesh(sp1, mesh)
FreeEntity(sp1)
как то так. Тебе прийдется писать свою систему спрайтов, чтобы они еще могли поворачиватся на камеру и тп. хотя для кнопок это не нужно, просто аттачишь к камере и все.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:29.
|