亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dxutil.cs

?? Particle System Test Application on C#
?? CS
字號:
//-----------------------------------------------------------------------------
// File: DXUtil.cs
//
// Desc: Shortcut macros and functions for using DX objects
//
// Copyright (c) Microsoft Corporation. All rights reserved
//-----------------------------------------------------------------------------
using System;
using System.IO;
using System.Runtime.InteropServices;




/// <summary>
/// Enumeration for various actions our timer can perform
/// </summary>
public enum DirectXTimer
{
	Reset, 
	Start, 
	Stop, 
	Advance,
	GetAbsoluteTime, 
	GetApplicationTime, 
	GetElapsedTime 
};




/// <summary>
/// Generic utility functions for our samples
/// </summary>
public class DXUtil
{
	#region Timer Internal Stuff
	[System.Security.SuppressUnmanagedCodeSecurity] // We won't use this maliciously
	[DllImport("kernel32")]
	private static extern bool QueryPerformanceFrequency(ref long PerformanceFrequency);
	[System.Security.SuppressUnmanagedCodeSecurity] // We won't use this maliciously
	[DllImport("kernel32")]
	private static extern bool QueryPerformanceCounter(ref long PerformanceCount);
	[System.Security.SuppressUnmanagedCodeSecurity] // We won't use this maliciously
	[DllImport("winmm.dll")]
	public static extern int timeGetTime();
	private static bool isTimerInitialized = false;
	private static bool m_bUsingQPF = false;
	private static bool m_bTimerStopped = true;
	private static long m_llQPFTicksPerSec = 0;
	private static long m_llStopTime = 0;
	private static long m_llLastElapsedTime = 0;
	private static long m_llBaseTime = 0;
	private static double m_fLastElapsedTime = 0.0;
	private static double m_fBaseTime = 0.0;
	private static double m_fStopTime = 0.0;
	#endregion

	// Constants for SDK Path registry keys
	private const string sdkPath = "Software\\Microsoft\\DirectX SDK";
	private const string sdkKey = "DX9J3SDK Samples Path";

	private DXUtil() { /* Private Constructor */ }




    /// <summary>
    /// Returns the DirectX SDK media path
    /// </summary>
	public static string SdkMediaPath
	{
		get
		{
			Microsoft.Win32.RegistryKey rKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(sdkPath);
			string sReg = string.Empty;
			if (rKey != null)
			{
				sReg = (string)rKey.GetValue(sdkKey);
				rKey.Close();
			}
			if (sReg != null)
				sReg += @"\Media\";
			else 
				return string.Empty;

			return sReg;
		}
	}




    /// <summary>
    /// Performs timer opertations. Use the following commands:
    /// 
    ///          DirectXTimer.Reset - to reset the timer
    ///          DirectXTimer.Start - to start the timer
    ///          DirectXTimer.Stop - to stop (or pause) the timer
    ///          DirectXTimer.Advance - to advance the timer by 0.1 seconds
    ///          DirectXTimer.GetAbsoluteTime - to get the absolute system time
    ///          DirectXTimer.GetApplicationTime - to get the current time
    ///          DirectXTimer.GetElapsedTime - to get the time that elapsed between TIMER_GETELAPSEDTIME calls
    ///
    /// </summary>
	public static float Timer(DirectXTimer command)
	{
		if (!isTimerInitialized)
		{
			isTimerInitialized = true;

			// Use QueryPerformanceFrequency() to get frequency of timer.  If QPF is
			// not supported, we will timeGetTime() which returns milliseconds.
			long qwTicksPerSec = 0;
			m_bUsingQPF = QueryPerformanceFrequency(ref qwTicksPerSec);
			if (m_bUsingQPF)
				m_llQPFTicksPerSec = qwTicksPerSec;
		}
		if (m_bUsingQPF)
		{
			double time;
			double fElapsedTime;
			long qwTime = 0;
		    
			// Get either the current time or the stop time, depending
			// on whether we're stopped and what command was sent
			if (m_llStopTime != 0 && command != DirectXTimer.Start && command != DirectXTimer.GetAbsoluteTime)
				qwTime = m_llStopTime;
			else
				QueryPerformanceCounter(ref qwTime);

			// Return the elapsed time
			if (command == DirectXTimer.GetElapsedTime)
			{
				fElapsedTime = (double) (qwTime - m_llLastElapsedTime) / (double) m_llQPFTicksPerSec;
				m_llLastElapsedTime = qwTime;
				return (float)fElapsedTime;
			}
		
			// Return the current time
			if (command == DirectXTimer.GetApplicationTime)
			{
				double fAppTime = (double) (qwTime - m_llBaseTime) / (double) m_llQPFTicksPerSec;
				return (float)fAppTime;
			}
		
			// Reset the timer
			if (command == DirectXTimer.Reset)
			{
				m_llBaseTime        = qwTime;
				m_llLastElapsedTime = qwTime;
				m_llStopTime        = 0;
				m_bTimerStopped     = false;
				return 0.0f;
			}
		
			// Start the timer
			if (command == DirectXTimer.Start)
			{
				if (m_bTimerStopped)
					m_llBaseTime += qwTime - m_llStopTime;
				m_llStopTime = 0;
				m_llLastElapsedTime = qwTime;
				m_bTimerStopped = false;
				return 0.0f;
			}
		
			// Stop the timer
			if (command == DirectXTimer.Stop)
			{
				if (!m_bTimerStopped)
				{
					m_llStopTime = qwTime;
					m_llLastElapsedTime = qwTime;
					m_bTimerStopped = true;
				}
				return 0.0f;
			}
		
			// Advance the timer by 1/10th second
			if (command == DirectXTimer.Advance)
			{
				m_llStopTime += m_llQPFTicksPerSec/10;
				return 0.0f;
			}

			if (command == DirectXTimer.GetAbsoluteTime)
			{
				time = qwTime / (double) m_llQPFTicksPerSec;
				return (float)time;
			}

			return -1.0f; // Invalid command specified
		}
		else
		{
			// Get the time using timeGetTime()
			double time;
			double fElapsedTime;
		    
			// Get either the current time or the stop time, depending
			// on whether we're stopped and what command was sent
			if (m_fStopTime != 0.0 && command != DirectXTimer.Start && command != DirectXTimer.GetAbsoluteTime)
				time = m_fStopTime;
			else
				time = timeGetTime() * 0.001;
		
			// Return the elapsed time
			if (command == DirectXTimer.GetElapsedTime)
			{   
				fElapsedTime = (double) (time - m_fLastElapsedTime);
				m_fLastElapsedTime = time;
				return (float) fElapsedTime;
			}
		
			// Return the current time
			if (command == DirectXTimer.GetApplicationTime)
			{
				return (float) (time - m_fBaseTime);
			}
		
			// Reset the timer
			if (command == DirectXTimer.Reset)
			{
				m_fBaseTime         = time;
				m_fLastElapsedTime  = time;
				m_fStopTime         = 0;
				m_bTimerStopped     = false;
				return 0.0f;
			}
		
			// Start the timer
			if (command == DirectXTimer.Start)
			{
				if (m_bTimerStopped)
					m_fBaseTime += time - m_fStopTime;
				m_fStopTime = 0.0f;
				m_fLastElapsedTime  = time;
				m_bTimerStopped = false;
				return 0.0f;
			}
		
			// Stop the timer
			if (command == DirectXTimer.Stop)
			{
				if (!m_bTimerStopped)
				{
					m_fStopTime = time;
					m_fLastElapsedTime  = time;
					m_bTimerStopped = true;
				}
				return 0.0f;
			}
		
			// Advance the timer by 1/10th second
			if (command == DirectXTimer.Advance)
			{
				m_fStopTime += 0.1f;
				return 0.0f;
			}

			if (command == DirectXTimer.GetAbsoluteTime)
			{
				return (float) time;
			}

			return -1.0f; // Invalid command specified
		}
	}




    /// <summary>
    /// Returns a valid path to a DXSDK media file
    /// </summary>
    /// <param name="path">Initial path to search</param>
    /// <param name="filename">Filename we're searching for</param>
    /// <returns>Full path to the file</returns>
	public static string FindMediaFile(string path, string filename)
	{
		// First try to load the file in the full path
		if (path != null)
		{
			if (File.Exists(AppendDirectorySeparator(path) + filename))
				return AppendDirectorySeparator(path) + filename;
		}

		// if not try to find the filename in the current folder.
		if (File.Exists(filename))
			return AppendDirectorySeparator(Directory.GetCurrentDirectory()) + filename; 

		// last, check if the file exists in the media directory
		if (File.Exists(AppendDirectorySeparator(SdkMediaPath) + filename))
			return AppendDirectorySeparator(SdkMediaPath) + filename;

		throw new FileNotFoundException("Could not find this file.", filename);
	}




    /// <summary>
    /// Returns a valid string with a directory separator at the end.
    /// </summary>
	private static string AppendDirectorySeparator(string filename)
	{
		if (!filename.EndsWith(@"\"))
			return filename + @"\";

		return filename;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中国色在线观看另类| 亚洲成a人v欧美综合天堂| 亚洲欧洲性图库| 热久久免费视频| 不卡在线视频中文字幕| 日韩三级精品电影久久久| 亚洲伦理在线免费看| 韩日av一区二区| 在线电影一区二区三区| ...xxx性欧美| 国产精品一区二区果冻传媒| 91精品国产综合久久精品图片 | 欧美另类videos死尸| 亚洲成人自拍一区| 成人av资源在线观看| 精品久久久三级丝袜| 视频一区在线视频| 欧美午夜精品一区二区三区| 国产精品久久久久影院老司 | 日韩精品在线一区二区| 亚洲一级二级三级| 91丨九色丨黑人外教| 日韩福利电影在线| 美女视频黄a大片欧美| 色婷婷av一区二区三区软件| 国产欧美日韩在线视频| 国内一区二区视频| 亚洲精品一区二区三区四区高清| 视频一区视频二区中文字幕| 欧美性三三影院| 亚洲一区在线观看网站| 欧日韩精品视频| 亚洲不卡av一区二区三区| 欧洲亚洲国产日韩| 午夜欧美2019年伦理| 欧美一区午夜视频在线观看| 日本成人在线网站| 日韩欧美在线一区二区三区| 蜜臀av性久久久久蜜臀av麻豆| 日韩一区二区三区视频在线观看| 日本欧美一区二区在线观看| 日韩欧美一级在线播放| 九一九一国产精品| 成人精品鲁一区一区二区| 97超碰欧美中文字幕| 国产女人18毛片水真多成人如厕| 久久99在线观看| 久久久久国产免费免费| 国产成人av电影在线观看| 国产欧美日韩亚州综合| 99re热这里只有精品视频| 亚洲精品大片www| 91精品国产麻豆| 国产原创一区二区| 国产精品久久看| 欧美专区日韩专区| 亚洲成人动漫在线免费观看| 国产精品国产馆在线真实露脸| www.性欧美| 亚洲一卡二卡三卡四卡无卡久久| 7777精品伊人久久久大香线蕉完整版| 老司机精品视频在线| 久久精品视频在线免费观看| 99久久er热在这里只有精品66| 色综合天天综合在线视频| 97国产精品videossex| 亚洲视频香蕉人妖| 欧美最新大片在线看| 日av在线不卡| 亚洲欧美一区二区三区孕妇| 日韩欧美色电影| 99re66热这里只有精品3直播| 亚洲成人在线免费| 欧美激情中文字幕| 日韩一区二区三区在线视频| 成人动漫一区二区三区| 日韩激情视频网站| 亚洲欧美欧美一区二区三区| 91麻豆精品91久久久久久清纯 | 欧美二区三区的天堂| 国产精品自拍毛片| 亚洲午夜免费视频| 国产精品久久久久久福利一牛影视 | 国产寡妇亲子伦一区二区| 中文字幕欧美日韩一区| 欧美日韩国产片| 成人av动漫网站| 日本三级亚洲精品| 亚洲美女免费在线| 国产网站一区二区三区| 欧美一区二区三区精品| 99国产麻豆精品| 国产成人精品一区二区三区四区 | 欧美精品一区二区不卡| 成人高清视频在线观看| 91麻豆swag| 精品中文字幕一区二区小辣椒| **网站欧美大片在线观看| 精品国精品自拍自在线| 欧美色涩在线第一页| 99精品久久久久久| 国产一区二区免费在线| 日韩1区2区日韩1区2区| 亚洲午夜激情av| 亚洲激情五月婷婷| 亚洲欧洲日韩综合一区二区| 久久久久久97三级| 日韩欧美国产一二三区| 欧美日韩电影在线播放| 91福利国产成人精品照片| 99热在这里有精品免费| 国产91综合一区在线观看| 经典三级一区二区| 免费三级欧美电影| 日韩中文字幕91| 五月开心婷婷久久| 午夜精品一区二区三区电影天堂 | 日韩免费看的电影| 欧美高清视频在线高清观看mv色露露十八 | 91精品国产综合久久蜜臀| 精品久久久久久久久久久久久久久| 欧美日韩精品一区二区三区| 欧美午夜影院一区| 欧美日韩一区高清| 欧美日韩一级大片网址| 在线播放中文一区| 欧美日韩成人综合在线一区二区| 欧美三级乱人伦电影| 在线不卡免费av| 精品剧情在线观看| 久久久久久久久岛国免费| 中文字幕av不卡| 亚洲在线视频一区| 日本视频一区二区| 国产高清不卡二三区| 成人97人人超碰人人99| 欧洲一区在线电影| 日韩精品一区二区三区视频| 国产农村妇女毛片精品久久麻豆| 国产精品无人区| 亚洲国产日韩a在线播放性色| 日韩高清电影一区| 丁香桃色午夜亚洲一区二区三区| 一本色道久久综合精品竹菊| 欧美精品日日鲁夜夜添| 欧美精品一区二区三区很污很色的| 国产精品乱码久久久久久| 亚洲国产中文字幕在线视频综合| 国产做a爰片久久毛片| 91丨porny丨国产入口| 制服丝袜亚洲播放| 国产精品麻豆视频| 亚洲电影你懂得| 国产成人av影院| 欧美日韩中文字幕一区二区| 亚洲精品在线三区| 亚洲一区二区三区激情| 国产一区亚洲一区| 欧美一区午夜精品| 国产精品成人一区二区艾草| 五月婷婷另类国产| 不卡电影一区二区三区| 日韩视频123| 亚洲另类色综合网站| 免费观看91视频大全| 色婷婷av一区二区三区软件| 精品国产乱码久久| 亚洲高清免费观看高清完整版在线观看| 北条麻妃国产九九精品视频| 欧美一区二区三区白人| 亚洲男人天堂av网| 国产精品18久久久久久久久久久久| 欧美日韩精品欧美日韩精品一综合| 欧美国产综合一区二区| 久久99精品国产.久久久久久| 欧美自拍偷拍一区| 亚洲色图一区二区| 国产成人久久精品77777最新版本| 欧美一区二区国产| 亚洲综合小说图片| 99精品黄色片免费大全| 国产日韩欧美一区二区三区乱码| 麻豆久久久久久| 欧美日本一道本在线视频| 亚洲综合一区在线| 91九色02白丝porn| 亚洲精品少妇30p| 亚洲色欲色欲www| 亚洲欧美日韩国产一区二区三区| 日本亚洲最大的色成网站www| 91一区二区三区在线观看| 国产午夜精品一区二区| 免费人成网站在线观看欧美高清| 欧美三级视频在线| 玉米视频成人免费看| 在线观看不卡一区| 亚洲一区二区三区影院| 欧美亚州韩日在线看免费版国语版| 中文字幕一区二区在线观看| 成人小视频在线|