本文整理汇总了C#中SharpDX.Windows.RenderForm.PointToClient方法的典型用法代码示例。如果您正苦于以下问题:C# RenderForm.PointToClient方法的具体用法?C# RenderForm.PointToClient怎么用?C# RenderForm.PointToClient使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SharpDX.Windows.RenderForm
的用法示例。
在下文中一共展示了RenderForm.PointToClient方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
//.........这里部分代码省略.........
Height = worldSize.Height
}, 30f);
emitters[i].Modifiers.Add(new MoveModifier(), 60f);
};
var renderer = new PointSpriteRenderer(device, budget)
{
// EnableFastFade = true
};
var texture = Texture.FromFile(device, "Pixel.dds");
var fontDescription = new FontDescription
{
Height = 16,
FaceName = "Consolas",
PitchAndFamily = FontPitchAndFamily.Mono,
Quality = FontQuality.Draft
};
var font = new Font(device, fontDescription);
var totalTimer = Stopwatch.StartNew();
var updateTimer = new Stopwatch();
var renderTimer = new Stopwatch();
var totalTime = 0f;
foreach (var emitter in emitters)
{
emitter.Trigger(Coordinate.Origin);
}
float updateTime = 0f;
RenderLoop.Run(form, () =>
{
// ReSharper disable AccessToDisposedClosure
var frameTime = ((float)totalTimer.Elapsed.TotalSeconds) - totalTime;
totalTime = (float)totalTimer.Elapsed.TotalSeconds;
var mousePosition = form.PointToClient(RenderForm.MousePosition);
Task.WaitAll(
Task.Factory.StartNew(() =>
{
var mouseVector = new Vector3(mousePosition.X, mousePosition.Y, 0f);
var unprojected = Vector3.Unproject(mouseVector, 0, 0, renderSize.Width, renderSize.Height, 0f, 1f, wvp);
Parallel.ForEach(emitters, emitter => ((VortexModifier)emitter.Modifiers.ElementAt(1)).Position = new Coordinate(unprojected.X, unprojected.Y));
updateTimer.Restart();
Parallel.ForEach(emitters, emitter => emitter.Update(frameTime));
updateTimer.Stop();
updateTime = (float)updateTimer.Elapsed.TotalSeconds;
_updateTimes.Add(updateTime);
}),
Task.Factory.StartNew(() =>
{
device.Clear(ClearFlags.Target, Color.Black, 1f, 0);
device.BeginScene();
renderTimer.Restart();
for (int i = 0; i < numEmitters; i++)
{
renderer.Render(emitters[i], wvp, texture);
}
renderTimer.Stop();
var renderTime = (float)renderTimer.Elapsed.TotalSeconds;
var totalUpdateTime = 0f;
// foreach (var time in _updateTimes)
// {
// totalUpdateTime += time;
// }
// totalUpdateTime /= _updateTimes.Count;
//
// if(_updateTimes.Count > 100)
// _updateTimes.RemoveAt(0);
font.DrawText(null, String.Format("Time: {0}", totalTimer.Elapsed), 0, 0, Color.White);
font.DrawText(null, String.Format("Particles: {0:n0}", emitters[0].ActiveParticles * numEmitters), 0, 16, Color.White);
font.DrawText(null, String.Format("Update: {0:n4} ({1,8:P2})", updateTime, updateTime / 0.01666666f), 0, 32, Color.White);
font.DrawText(null, String.Format("Render: {0:n4} ({1,8:P2})", renderTime, renderTime / 0.01666666f), 0, 48, Color.White);
device.EndScene();
device.Present();
})
);
if (Keyboard.IsKeyDown(Key.Escape))
Environment.Exit(0);
// ReSharper restore AccessToDisposedClosure
});
form.Dispose();
font.Dispose();
device.Dispose();
direct3d.Dispose();
}
示例2: Initialize
internal static void Initialize(RenderForm form)
{
_form = form;
_keyPressed = new HashSet<Key>();
_keyUp = new HashSet<Key>();
_keyDown = new HashSet<Key>();
_mouseHeld = new HashSet<int>();
_mouseDown = new HashSet<int>();
_mouseUp = new HashSet<int>();
DirectInput directInput = new DirectInput();
_keyboard = new Keyboard(directInput);
//_keyboard.SetCooperativeLevel(form.Handle, CooperativeLevel.Exclusive | CooperativeLevel.Foreground );
_keyboard.Properties.BufferSize = 128;
_mouse = new Mouse(directInput);
_mouse.Properties.AxisMode = DeviceAxisMode.Relative;
_mouse.Properties.BufferSize = 128;
//_mouse.SetCooperativeLevel(form.Handle, CooperativeLevel.Foreground | CooperativeLevel.NonExclusive);
form.MouseMove += new MouseEventHandler(form_MouseMove);
MousePositionPoint = form.PointToClient(Cursor.Position);
}