Тема: Sigel
Показать сообщение отдельно
Старый 08.11.2007, 01:26   #20
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Sigel

насчет подключения, лично я невижу никакой разницы между етими файлами, но могу сделать одельный интерфейс в h - файл, чтобы cpp глаза не мозолил.
насчет структуры - собственно я сейчас его пишу не для того, чтобы написать. первый блин всегда комом. просто, потренировать мозги на сообразительность. спасибо.

Render, я с тобой согласен, что условия нечестные. тем более наверняка половина из тестирующих не выключала даже DebugMode. собсно мне пока влом переписывать sigel файл, но если кому не в лом, то пусть он вынесет код обновления етих фигур за цикл, примерно так:

Graphics3D 1024,768,32,1

cam=CreateCamera()
TurnEntity cam,0,180,0
cnt=10000

cube=CreateCube()
tex=LoadTexture("texture.bmp")

EntityTexture cube,tex

last_tick=MilliSecs()

Type cub
	Field dx#,dy#,dz#,x#,y#,z#,ax#,ay#,az#,r#
	Field ent
End Type

For i=1 To cnt
	c.cub=New cub
	c\ax=Rnd(-2,2)
	c\ay=Rnd(-2,2)
	c\az=Rnd(-2,2)
	c\dx=Rnd(-0.005,0.005)*57
	c\dy=Rnd(-0.005,0.005)*57
	c\dz=Rnd(-0.005,0.005)*57
	c\r=Rnd(20,50)
	c\x=Rnd(-1.57,1.57)*57
	c\y=Rnd(-1.57,1.57)*57
	c\z=Rnd(-1.57,1.57)*57
	c\ent=CopyEntity(cube)	
Next
x#=0
y#=0
z#=0

For c.cub=Each cub
	x=Sin(c\x)*c\r
	y=Cos(c\y)*c\r
	z=-50+Sin(c\z)*c\r
	c\x=c\x+c\dx
	c\y=c\y+c\dy
	c\z=c\z+c\dz
	PositionEntity(c\ent,x,y,z)
	TurnEntity(c\ent,c\ax,c\ay,c\az)	
Next

While Not KeyDown(1)

	frames=frames+1
	If(last_tick<MilliSecs()-1000)
		last_tick=MilliSecs()
		fps=frames
		frames=0
	EndIf
	
	RenderWorld
	Text 10,10,fps
	Flip
Wend
все равно меньше. у меня 16-20. тогда как в сиджеле, даже при постоянных апдейтах - 25-29.
собственно я признаюсь, в блице тормозит FrustumCulling, я не знаю как они его делали, но явно по тормозному. в своей ф-ии (для примера брал из NeHe) я вылизал все математические операторы. поетому она и работает быстро. а тормозит дурацкий вывод.
(Offline)
 
Ответить с цитированием