?? d3dsettingsform.cs
字號:
// Update settings with new refresh rate
string refreshRateString = (string)refreshRateComboBox.SelectedItem;
int refreshRate = 0;
if (refreshRateString != "Default Rate")
{
string[] refreshRateSplitStringArray = refreshRateString.Split();
refreshRate = int.Parse(refreshRateSplitStringArray[0]);
}
settings.FullscreenDisplayMode.RefreshRate = refreshRate;
}
/// <summary>
/// Respond to a change of selected back buffer format by rebuilding
/// the depth/stencil format list, multisample type list, and vertex
/// processing type list.
/// </summary>
private void BackBufferFormatChanged(object sender, System.EventArgs e)
{
GraphicsDeviceInfo deviceInfo = (GraphicsDeviceInfo)deviceComboBox.SelectedItem;
Format adapterFormat = (Format)adapterFormatComboBox.SelectedItem;
Format backBufferFormat = (Format)backBufferFormatComboBox.SelectedItem;
foreach (DeviceCombo deviceCombo in deviceInfo.DeviceComboList)
{
if (deviceCombo.IsWindowed == settings.IsWindowed &&
deviceCombo.AdapterFormat == adapterFormat &&
deviceCombo.BackBufferFormat == backBufferFormat)
{
deviceCombo.BackBufferFormat = backBufferFormat;
settings.DeviceCombo = deviceCombo;
depthStencilBufferComboBox.Items.Clear();
if (enumeration.AppUsesDepthBuffer)
{
foreach (DepthFormat format in deviceCombo.DepthStencilFormatList)
{
depthStencilBufferComboBox.Items.Add(format);
if (format == settings.DepthStencilBufferFormat)
depthStencilBufferComboBox.SelectedItem = format;
}
if (depthStencilBufferComboBox.SelectedItem == null && depthStencilBufferComboBox.Items.Count > 0)
depthStencilBufferComboBox.SelectedIndex = 0;
}
else
{
depthStencilBufferComboBox.Enabled = false;
depthStencilBufferComboBox.Items.Add("(not used)");
depthStencilBufferComboBox.SelectedIndex = 0;
}
vertexProcComboBox.Items.Clear();
foreach (VertexProcessingType vpt in deviceCombo.VertexProcessingTypeList)
{
vertexProcComboBox.Items.Add(vpt);
if (vpt == settings.VertexProcessingType)
vertexProcComboBox.SelectedItem = vpt;
}
if (vertexProcComboBox.SelectedItem == null && vertexProcComboBox.Items.Count > 0)
vertexProcComboBox.SelectedIndex = 0;
presentIntervalComboBox.Items.Clear();
foreach (PresentInterval pi in deviceCombo.PresentIntervalList)
{
presentIntervalComboBox.Items.Add(pi);
if (pi == settings.PresentInterval)
presentIntervalComboBox.SelectedItem = pi;
}
if (presentIntervalComboBox.SelectedItem == null && presentIntervalComboBox.Items.Count > 0)
presentIntervalComboBox.SelectedIndex = 0;
break;
}
}
}
/// <summary>
/// Respond to a change of selected depth/stencil buffer format.
/// </summary>
private void DepthStencilBufferFormatChanged(object sender, System.EventArgs e)
{
if (enumeration.AppUsesDepthBuffer)
settings.DepthStencilBufferFormat = (DepthFormat)depthStencilBufferComboBox.SelectedItem;
multisampleComboBox.Items.Clear();
foreach (MultiSampleType msType in settings.DeviceCombo.MultiSampleTypeList)
{
// Check for DS/MS conflict
bool conflictFound = false;
foreach (DepthStencilMultiSampleConflict DSMSConflict in settings.DeviceCombo.DepthStencilMultiSampleConflictList)
{
if (DSMSConflict.DepthStencilFormat == settings.DepthStencilBufferFormat &&
DSMSConflict.MultiSampleType == msType)
{
conflictFound = true;
break;
}
}
if (!conflictFound)
{
multisampleComboBox.Items.Add(msType);
if (msType == settings.MultisampleType)
multisampleComboBox.SelectedItem = msType;
}
}
if (multisampleComboBox.SelectedItem == null && multisampleComboBox.Items.Count > 0)
multisampleComboBox.SelectedIndex = 0;
}
/// <summary>
/// Respond to a change of selected multisample type.
/// </summary>
private void MultisampleTypeChanged(object sender, System.EventArgs e)
{
settings.MultisampleType = (MultiSampleType)multisampleComboBox.SelectedItem;
// Find current max multisample quality
int maxQuality = 0;
DeviceCombo deviceCombo = settings.DeviceCombo;
for (int i = 0; i < deviceCombo.MultiSampleQualityList.Count; i++)
{
if ((MultiSampleType)deviceCombo.MultiSampleTypeList[i] == settings.MultisampleType)
{
maxQuality = (int)deviceCombo.MultiSampleQualityList[i];
break;
}
}
// Update multisample quality list based on new type
multisampleQualityComboBox.Items.Clear();
for (int iLevel = 0; iLevel < maxQuality; iLevel++)
{
multisampleQualityComboBox.Items.Add(iLevel);
if (settings.MultisampleQuality == iLevel)
multisampleQualityComboBox.SelectedItem = iLevel;
}
if (multisampleQualityComboBox.SelectedItem == null && multisampleQualityComboBox.Items.Count > 0)
multisampleQualityComboBox.SelectedIndex = 0;
}
/// <summary>
/// Respond to a change of selected multisample quality.
/// </summary>
private void MultisampleQualityChanged(object sender, System.EventArgs e)
{
settings.MultisampleQuality = (int)multisampleQualityComboBox.SelectedItem;
}
/// <summary>
/// Respond to a change of selected vertex processing type.
/// </summary>
private void VertexProcessingChanged(object sender, System.EventArgs e)
{
settings.VertexProcessingType = (VertexProcessingType)vertexProcComboBox.SelectedItem;
}
/// <summary>
/// Respond to a change of selected vertex processing type.
/// </summary>
private void PresentIntervalChanged(object sender, System.EventArgs e)
{
settings.PresentInterval = (PresentInterval)presentIntervalComboBox.SelectedItem;
}
}
/// <summary>
/// Current D3D settings: adapter, device, mode, formats, etc.
/// </summary>
public class D3DSettings
{
public bool IsWindowed;
public GraphicsAdapterInfo WindowedAdapterInfo;
public GraphicsDeviceInfo WindowedDeviceInfo;
public DeviceCombo WindowedDeviceCombo;
public DisplayMode WindowedDisplayMode; // not changable by the user
public DepthFormat WindowedDepthStencilBufferFormat;
public MultiSampleType WindowedMultisampleType;
public int WindowedMultisampleQuality;
public VertexProcessingType WindowedVertexProcessingType;
public PresentInterval WindowedPresentInterval;
public int WindowedWidth;
public int WindowedHeight;
public GraphicsAdapterInfo FullscreenAdapterInfo;
public GraphicsDeviceInfo FullscreenDeviceInfo;
public DeviceCombo FullscreenDeviceCombo;
public DisplayMode FullscreenDisplayMode; // changable by the user
public DepthFormat FullscreenDepthStencilBufferFormat;
public MultiSampleType FullscreenMultisampleType;
public int FullscreenMultisampleQuality;
public VertexProcessingType FullscreenVertexProcessingType;
public PresentInterval FullscreenPresentInterval;
/// <summary>
/// The adapter information
/// </summary>
public GraphicsAdapterInfo AdapterInfo
{
get { return IsWindowed ? WindowedAdapterInfo : FullscreenAdapterInfo; }
set { if (IsWindowed) WindowedAdapterInfo = value; else FullscreenAdapterInfo = value; }
}
/// <summary>
/// The device information
/// </summary>
public GraphicsDeviceInfo DeviceInfo
{
get { return IsWindowed ? WindowedDeviceInfo : FullscreenDeviceInfo; }
set { if (IsWindowed) WindowedDeviceInfo = value; else FullscreenDeviceInfo = value; }
}
/// <summary>
/// The device combo
/// </summary>
public DeviceCombo DeviceCombo
{
get { return IsWindowed ? WindowedDeviceCombo : FullscreenDeviceCombo; }
set { if (IsWindowed) WindowedDeviceCombo = value; else FullscreenDeviceCombo = value; }
}
/// <summary>
/// The adapters ordinal
/// </summary>
public int AdapterOrdinal
{
get { return DeviceCombo.AdapterOrdinal; }
}
/// <summary>
/// The type of device this is
/// </summary>
public DeviceType DevType
{
get { return DeviceCombo.DevType; }
}
/// <summary>
/// The back buffers format
/// </summary>
public Format BackBufferFormat
{
get { return DeviceCombo.BackBufferFormat; }
}
/// <summary>
/// The display mode
/// </summary>
public DisplayMode DisplayMode
{
get { return IsWindowed ? WindowedDisplayMode : FullscreenDisplayMode; }
set { if (IsWindowed) WindowedDisplayMode = value; else FullscreenDisplayMode = value; }
}
/// <summary>
/// The Depth stencils format
/// </summary>
public DepthFormat DepthStencilBufferFormat
{
get { return IsWindowed ? WindowedDepthStencilBufferFormat : FullscreenDepthStencilBufferFormat; }
set { if (IsWindowed) WindowedDepthStencilBufferFormat = value; else FullscreenDepthStencilBufferFormat = value; }
}
/// <summary>
/// The multisample type
/// </summary>
public MultiSampleType MultisampleType
{
get { return IsWindowed ? WindowedMultisampleType : FullscreenMultisampleType; }
set { if (IsWindowed) WindowedMultisampleType = value; else FullscreenMultisampleType = value; }
}
/// <summary>
/// The multisample quality
/// </summary>
public int MultisampleQuality
{
get { return IsWindowed ? WindowedMultisampleQuality : FullscreenMultisampleQuality; }
set { if (IsWindowed) WindowedMultisampleQuality = value; else FullscreenMultisampleQuality = value; }
}
/// <summary>
/// The vertex processing type
/// </summary>
public VertexProcessingType VertexProcessingType
{
get { return IsWindowed ? WindowedVertexProcessingType : FullscreenVertexProcessingType; }
set { if (IsWindowed) WindowedVertexProcessingType = value; else FullscreenVertexProcessingType = value; }
}
/// <summary>
/// The presentation interval
/// </summary>
public PresentInterval PresentInterval
{
get { return IsWindowed ? WindowedPresentInterval : FullscreenPresentInterval; }
set { if (IsWindowed) WindowedPresentInterval = value; else FullscreenPresentInterval = value; }
}
/// <summary>
/// Clone the d3d settings class
/// </summary>
public D3DSettings Clone()
{
return (D3DSettings)MemberwiseClone();
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -