|
|
|||||
никак не могу прикрутить away к Flash Builder.... пустой экран получается.... подскажите плиз что делаю не так?
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" creationComplete="application1_creationCompleteHandler(event)"> <mx:UIComponent id="ui" width="100%" height="100%"/> <s:BorderContainer width="100%" height="100%"> <s:SpriteVisualElement id="sv" width="100%" height="100%"/> </s:BorderContainer> <s:TextArea id="txt" width="200" height="100" left="0" verticalCenter="0"/> <fx:Script> <![CDATA[ import mx.events.FlexEvent; protected function application1_creationCompleteHandler(event:FlexEvent):void { var ss:Basic_View = new Basic_View(); sv.addChild(ss); } ]]> </fx:Script> </s:Application> package { import away3d.containers.*; import away3d.entities.*; import away3d.materials.*; import away3d.primitives.*; import away3d.utils.*; import flash.display.*; import flash.events.*; import flash.geom.Vector3D; [SWF(backgroundColor="#000000", frameRate="60")] public class Basic_View extends Sprite { //plane texture [Embed(source="/embeds/floor_diffuse.jpg")] public static var FloorDiffuse:Class; //engine variables private var _view:View3D; //scene objects private var _plane:Mesh; /** * Constructor */ public function Basic_View() { addEventListener(Event.ADDED_TO_STAGE, init); } private function init(event:Event=null):void { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; //setup the view _view = new View3D(); addChild(_view); //setup the camera _view.camera.z = -600; _view.camera.y = 500; _view.camera.lookAt(new Vector3D()); //setup the scene _plane = new Mesh(new PlaneGeometry(700, 700), new TextureMaterial(Cast.bitmapTexture(FloorDiffuse))); _view.scene.addChild(_plane); //setup the render loop addEventListener(Event.ENTER_FRAME, _onEnterFrame); stage.addEventListener(Event.RESIZE, onResize); onResize(); } /** * render loop */ private function _onEnterFrame(e:Event):void { _plane.rotationY += 1; _view.render(); } /** * stage listener for resize events */ private function onResize(event:Event = null):void { _view.width = stage.stageWidth; _view.height = stage.stageHeight; } } } хмм... прикрутил к флэшу - работает. а в билдере ни в какую |
|
|||||
Директива import не внедряет сама по себе классы, она лишь делает их "видимыми" для использования.
__________________
Дети не должны знать о своих родителях |
|
|||||
во флэше 3000 кубиков при постоянном вращении дают 15 фпс. уже лучше. но что-то меня берут сомнения. это предел?
|
|
|||||
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,112
Записей в блоге: 1
|
Цитата:
Насчет кубиков на сайте у меня есть демка. Там около 500 объектов + 4 источника освещения + одна тень. На среднем ноуте (моём) выдает около 30 фпс.
__________________
hauts.ru |
|
|||||
Регистрация: Jul 2008
Сообщений: 912
|
Цитата:
|
|
|||||
да. недосмотрел я в архив. это архив весит 10 метров, а сама библиотека 532 килобайта
Добавлено через 42 секунды Цитата:
Добавлено через 16 минут Цитата:
Источников освещения 3 макс. При этом у каждого объекта 3-5 материалов. К сожалению не могу это всё промоделировать. Подскажите, с такими условиями фпс будет хороший на средних компах? |
|
|||||
Регистрация: Jul 2008
Сообщений: 912
|
Не демку не буду, это сложно и долго, тем более что для Away есть готовые решения. Объясню в чём суть. Все интернет GPU ускоренные технологии этим грешат и флеш и вебГЛ и даже юнити плеер - общение CPU и GPU идёт с большой задержкой по сравнению с приложениями которые стоят локально. Общение это происходит когда отрисовалось содержимое одного буфера вершин и нужно перейти к другому буферу - происходит DrawCall. Вот этих дравколов должно быть как можно меньше. Если мы добавляем объект в контекст как новый объект - он займёт весь буфер и не даст следёющему новому объекту попасть в этот буфер и не важно есть ли в буфере место или нет - каждый новый объект займёт свой отдельный буфер в видеокарте. Таким образом каждый кубик на вашей сцене провоцирует вызов дравкола. Хоть он состоит из 8 вершин, но он у вас занимает целый буфер который может вместит 60 000 вершин вызвав всего 1 дравкол. Так вот можно пихнуть все кубики в один буфер создав из них один объект и с помошью шейдеров вращать их отдельно друг от друга. Есть уже готовые библиотеки для авей и других движков например библиотека по работе с частицами Flint.
|
|
|||||
Регистрация: Jul 2008
Сообщений: 912
|
Счастливый человек, а то все больше и больше хотят...
|
Часовой пояс GMT +4, время: 03:21. |
|
« Предыдущая тема | Следующая тема » |
|
|