static void Main(string[] args) { Ag.initialize(); Aardvark.Base.Aardvark.Init(); using (var app = new OpenGlApplication()) { var win = app.CreateSimpleRenderWindow(1); var view = CameraView.LookAt(new V3d(2.0, 2.0, 2.0), V3d.Zero, V3d.OOI); var perspective = win.Sizes.Select(s => FrustumModule.perspective(60.0, 0.1, 10.0, ((float)s.X / (float)s.Y))); var viewTrafo = DefaultCameraController.control(win.Mouse, win.Keyboard, win.Time, view); var index = new[] { 0, 1, 2, 0, 2, 3 }; var positions = new[] { new V3f(-1, -1, 0), new V3f(1, -1, 0), new V3f(1, 1, 0), new V3f(-1, 1, 0) }; var attributes = new SymbolDict <Array>() { { DefaultSemantic.Positions, positions } }; var quad = new IndexedGeometry(IndexedGeometryMode.TriangleList, (Array)index, attributes, new SymbolDict <Object>()); var quadSg = quad.ToSg(); // This is one of the hardest parts in C#. Our FShade interface is rather generic and // works super awesome in F#. In C# however, without proper type inference doing simple function // calls suddenly requires a Phd in CS. Therefore, and especially since shaders cannot be written // in C# anyways, write application setup and shader code in F# ;) // Or don't use FShade. FShade simply does not work in without functional language // features such as type inference and function currying. Func <DefaultSurfaces.Vertex, FSharpExpr <V4d> > whiteShader = HighFun.ApplyArg0 <C4f, DefaultSurfaces.Vertex, FSharpExpr <V4d> >( DefaultSurfaces.constantColor, C4f.White); Func <DefaultSurfaces.Vertex, FSharpExpr <DefaultSurfaces.Vertex> > trafo = c => DefaultSurfaces.trafo(c); var sg = quadSg .WithEffects(new[] { FShadeSceneGraph.toEffect(FSharpFuncUtil.Create(trafo)), FShadeSceneGraph.toEffect(FSharpFuncUtil.Create(whiteShader)), }) .ViewTrafo(viewTrafo.Select(t => t.ViewTrafo)) .ProjTrafo(perspective.Select(t => t.ProjTrafo())); var task = app.Runtime.CompileRender(win.FramebufferSignature, sg); win.RenderTask = DefaultOverlays.withStatistics(task); win.Run(); } }
static IModRef <BackendConfiguration> SetScene(IRenderControl win) { var view = CameraView.LookAt(new V3d(2.0, 2.0, 2.0), V3d.Zero, V3d.OOI); var perspective = win.Sizes.Select(s => FrustumModule.perspective(60.0, 0.1, 10.0, ((float)s.X / (float)s.Y))); var viewTrafo = DefaultCameraController.control(win.Mouse, win.Keyboard, win.Time, view); var index = new[] { 0, 1, 2, 0, 2, 3 }; var positions = new[] { new V3f(-1, -1, 0), new V3f(1, -1, 0), new V3f(1, 1, 0), new V3f(-1, 1, 0) }; var attributes = new SymbolDict <Array>() { { DefaultSemantic.Positions, positions } }; var quad = new IndexedGeometry(IndexedGeometryMode.TriangleList, (Array)index, attributes, new SymbolDict <Object>()); var quadSg = quad.ToSg(); var whiteShader = Effects.ConstantColor.Effect(C4f.White); var trafo = Effects.Trafo.Effect; var sg = quadSg .WithEffects(new[] { trafo, whiteShader }) .ViewTrafo(viewTrafo.Select(t => t.ViewTrafo)) .ProjTrafo(perspective.Select(t => t.ProjTrafo())); var config = new ModRef <BackendConfiguration>(BackendConfigurationModule.UnmanagedOptimized); var task = ((Aardvark.Rendering.GL.Runtime)win.Runtime).CompileRender(win.FramebufferSignature, config, Aardvark.SceneGraph.Semantics.RenderObjectSemantics.Semantic.renderObjects(sg)); win.RenderTask = DefaultOverlays.withStatistics(task); return(config); }
public override void OnEnter() { string text = string.Format("{0} OnEnter OnEnter Memory = {1}MB", base.GetType().FullName, TsPlatform.Operator.GetAppMemory()); TsPlatform.FileLog(text); TsLog.LogWarning(text, new object[0]); if (!TsPlatform.IsEditor && TsPlatform.IsAndroid && SystemInfo.processorCount < 2) { IntroMsgBoxDlg introMsgBoxDlg = (IntroMsgBoxDlg)NrTSingleton <FormsManager> .Instance.LoadForm(G_ID.INTROMSGBOX_DLG); if (introMsgBoxDlg != null) { string textFromPreloadText = NrTSingleton <NrTextMgr> .Instance.GetTextFromPreloadText("10"); introMsgBoxDlg.SetBtnChangeName(NrTSingleton <NrTextMgr> .Instance.GetTextFromPreloadText("8")); introMsgBoxDlg.SetMsg(null, null, null, null, NrTSingleton <NrTextMgr> .Instance.GetTextFromPreloadText("8"), textFromPreloadText, eMsgType.MB_OK); } } if (TsPlatform.IsEditor) { NmMainFrameWork.AddBGM(); } if (TsPlatform.IsAndroid) { PlayGamesPlatform.DebugLogEnabled = true; PlayGamesPlatform.Activate(); } TsLog.Log("====== {0}.OnEnter", new object[] { base.GetType().FullName }); Scene.ChangeSceneType(this.SceneType()); if (Camera.main != null && Camera.main.gameObject != null) { DefaultCameraController component = Camera.main.gameObject.GetComponent <DefaultCameraController>(); if (component == null) { Camera.main.gameObject.AddComponent <DefaultCameraController>(); } GameObject target = GameObject.Find("MainFramework"); UnityEngine.Object.DontDestroyOnLoad(target); } else { NrMainSystem.CheckAndSetReLoginMainCamera(); } if (NrTSingleton <NrMainSystem> .Instance.m_ReLogin) { TsSceneSwitcher.Instance.DeleteScene(TsSceneSwitcher.ESceneType.WorldScene); TsSceneSwitcher.Instance.DeleteScene(TsSceneSwitcher.ESceneType.BattleScene); base.StartTaskSerial(this.LoadLoginSleep()); base.StartTaskSerial(CommonTasks.LoadEmptyMainScene()); base.StartTaskSerial(CommonTasks.ClearAudioStack()); base.StartTaskSerial(CommonTasks.MemoryCleaning(true, 8)); NmMainFrameWork.LoadImage(); NrTSingleton <FormsManager> .Instance.LoadForm(G_ID.LOGINBG_DLG); } base.StartTaskSerial(CommonTasks.SetGUIBehaviourScene()); if (!NrTSingleton <NrMainSystem> .Instance.m_ReLogin && TsPlatform.IsEditor) { string strFileName = string.Format("{0}/../SystemData/ServerList.txt", Application.dataPath); NrConnectTable nrConnectTable = new NrConnectTable(); nrConnectTable.AddServerList(strFileName); } if (!TsPlatform.IsEditor) { base.StartTaskSerial(this._RequestNoticeCheck()); base.StartTaskSerial(this._RequestNoticePage()); NrTSingleton <NrMainSystem> .Instance.m_bIsAutoLogin = true; } base.StartTaskSerial(this._RequestLoginNexonAuthorize()); base.StartTaskSerial(this._StageProcess()); base.StartTaskSerial(CommonTasks.FinalizeChangeScene(true)); }