static public void RenderFrame() { UpdateFramerate(); PrevTickCount = Environment.TickCount; device.ClearDepthStencilView(depthview, DepthStencilClearFlags.Depth, 1, 0); device.ClearRenderTargetView(renderview, Color.LightBlue); device.OutputMerger.DepthStencilState = depthstate; UpdateLight(); time += 0.01f; //EffectTechnique t = effect.GetTechniqueByName("Blinn"); //EffectTechnique t = effect.GetTechniqueByName("BlinnHeight"); EffectTechnique t = effect.GetTechniqueByName("POM"); M.Render(t); //L.Render(t); swapchain.Present(0, PresentFlags.None); //poczekaj EndTickCount = Environment.TickCount; while (Math.Abs(Environment.TickCount - PrevTickCount) < 16) { ; } Console.WriteLine("FPS {0:0.0} ; Light Pos: {1:0} {2:0} {3:0}", fps, LightPosition, LightPosition.Y, LightPosition.Z); Console.WriteLine("Rad {0:0.00}, Phi {1:0.00}, Theta {2:0.00}", radius, phi, theta); }
static public void RenderFrame() { device.ClearDepthStencilView(depthview, DepthStencilClearFlags.Depth, 1, 0); device.ClearRenderTargetView(renderview, Color.Blue); device.OutputMerger.DepthStencilState = depthstate; UpdateLight(); time += 0.001f; // if (count == 500) AddBox(); // if (count > 1000) { AddBall(); count = 0; } // count++; EffectTechnique t = effect.GetTechniqueByName("SimpleLight"); RasterizerStateDescription desc = new RasterizerStateDescription(); desc.CullMode = CullMode.None; desc.FillMode = FillMode.Wireframe; //dlaczego to nei dziala? effect.GetVariableByName("xDiffuseTexture").AsResource().SetResource(DiffuseResource); //byle co, i tak renderuje tylko boxy i plane'y effect.GetVariableByName("xMaxMass").AsScalar().Set(MaxMass); effect.GetVariableByName("xMass").AsScalar().Set(1); SetMatrices(Matrix.RotationX(-(float)Math.PI / 2) * Matrix.Scaling(10, 10, 10) * Matrix.Translation(0, -0.2f, 0)); Plane.Render(t); SetMatrices(Matrix.Scaling(10, 10, 10) * Matrix.Translation(0, 50f, -100)); Plane.Render(t); SetMatrices(Matrix.RotationY((float)Math.PI / 2) * Matrix.Scaling(10, 10, 10) * Matrix.Translation(-100f, 50f, 0)); Plane.Render(t); SetMatrices(Matrix.RotationY(-(float)Math.PI / 2) * Matrix.Scaling(10, 10, 10) * Matrix.Translation(100, 50f, 0)); Plane.Render(t); SetMatrices(Matrix.RotationY(-(float)Math.PI) * Matrix.Scaling(10, 10, 10) * Matrix.Translation(0, 50f, 100)); Plane.Render(t); SetMatrices(Matrix.RotationX((float)Math.PI / 2) * Matrix.Scaling(10, 10, 10) * Matrix.Translation(0, 100f, 0)); Plane.Render(t); effect.GetVariableByName("xDiffuseTexture").AsResource().SetResource(Diffuse2Resource); int i = 0; foreach (var M in BoxMatrices) { SetMatrices(M.Value); if (i < howManyBeginningActors) { SetMatrices(ScaleMatrixNoTranslation(M.Value, scale)); effect.GetVariableByName("xMass").AsScalar().Set(Engine.Actors[i + 7].Mass); } Boxes[i].Render(t); i++; } effect.GetVariableByName("xDiffuseTexture").AsResource().SetResource(Diffuse3Resource); i = 0; foreach (var M in BallMatrices) { SetMatrices(M.Value); Balls[i].Render(t); i++; } effect.GetVariableByName("xDiffuseTexture").AsResource().SetResource(Diffuse2Resource); foreach (var C in Engine.Scene.Cloths) { WavefrontLoader.WFOGeometry G = new WavefrontLoader.WFOGeometry(device, C, ClothGeometry); SetMatrices(Matrix.Identity); G.Render(device, t); } Engine.Step(); //dlaczego zmienia mi tutaj moje BoxMatrices? chyba w sumie musi zeby karta wiedziala co ma wyrenderowac swapchain.Present(0, PresentFlags.None); prevFrameX = curFrameX; prevFrameY = curFrameY; }