收藏 收藏

Microsoft Visual Studio.Net(专业版)技术支持

Microsoft Visual Studio.Net(专业版)图片
目前该产品的统计信息
常见问题 在线问题 说明书 产品驱动
63条 0条 0条 0条
发布Microsoft Visual Studio.Net(专业版)的技术问题 Microsoft Visual Studio.Net(专业版)的常见问题

查看Microsoft/微软开发软件产品的常见问题常见问题解答

  1. 1.当我在运行时向 ToolBar 分配一个 ImageList 时,为什么图像没有显示?
  2. 关闭 答案:
    您可以将 ImageList 分配给 ToolBar,通常在窗体的 load 函数中进行,但要确保再次应用 ToolBar 按钮的图像索引。在本机 ToolBar 控件中,不支持在设置 ToolBar 的 ImageList 之前设置 ToolBar
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  3. 关闭 答案:

    您可以将 ImageList 分配给 ToolBar,通常在窗体的 load 函数中进行,但要确保再次应用 ToolBar 按钮的图像索引。在本机 ToolBar 控件中,不支持在设置 ToolBar 的 ImageList 之前设置 ToolBar 按钮的图像索引。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  4. 2.为什么我不能创建 ContextMenu 分隔符?
  5. 关闭 答案:
    这是一个已知的 bug,即当在 ContextMenu 控件中添加一个 ContextMenu 项后,将它设为分隔符就会引发 NotSupportedException。问题在于 WinCE 有一个限制,即当 ContextMenu 的父级是一个控件时
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  6. 关闭 答案:
    这是一个已知的 bug,即当在 ContextMenu 控件中添加一个 ContextMenu 项后,将它设为分隔符就会引发 NotSupportedException。问题在于 WinCE 有一个限制,即当 ContextMenu 的父级是一个控件时,向该 ContextMenu 添加一个菜单项后就不允许将该菜单项标记(更改)为分隔符。在 Visual Studio 2003 中,设计器分割设备项目的代码与在桌面上类似,都会产生这种问题。可以这样来解决:在一个独立于 InitilizeComponent 的方法中添加 ContextMenu。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  7. 3.如何启用一个应用程序的多个实例?
  8. 关闭 答案:
    .NET Compact Framework 不支持多实例。以下代码示例提供了一种解决方案,它允许当启动应用程序时(但是已有一个运行着的实例)实例化而非最大化应用程序。 注:并非所有版本的 OS(包括未来版
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  9. 关闭 答案:

    .NET Compact Framework 不支持多实例。以下代码示例提供了一种解决方案,它允许当启动应用程序时(但是已有一个运行着的实例)实例化而非最大化应用程序。

    注:并非所有版本的 OS(包括未来版本)都支持以下代码,也不保证在所有这些版本中都能工作。

    // C#

    using System.Runtime.InteropServices; using System.Reflection; private void Form1_Load(object sender, System.EventArgs e) { this.Text = string.Format("Form {0}", new Random().Next()); } [DllImport("CoreDll")] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport("CoreDll")] public static extern int SetWindowText(IntPtr hWnd, string lpString); protected override void OnResize(EventArgs e) { Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); IntPtr hWnd = FindWindow("#NETCF_AGL_PARK_", asm.GetModules()[0].FullyQualifiedName); if (hWnd != IntPtr.Zero) SetWindowText(hWnd, "#42"); base.OnResize (e); } 'VB Imports System.Runtime.InteropServices Imports System.Reflection Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles MyBase.Load Me.Text = String.Format("Form {0}", New Random().Next()) End Sub 'Form1_Load _ Public Shared Function FindWindow(ByVal lpClassName As String, _ ByVal lpWindowName As String) As IntPtr End Function _ Public Shared Function SetWindowText(ByVal hWnd As IntPtr, _ ByVal lpString As String) As Integer End Function Protected Overrides Sub OnResize(ByVal e As EventArgs) Dim asm As [Assembly] = System.Reflection.Assembly.GetExecutingAssembly() Dim hWnd As IntPtr = FindWindow("#NETCF_AGL_PARK_", _ asm.GetModules()(0).FullyQualifiedName) If hWnd.ToInt32() <> IntPtr.Zero.ToInt32() Then SetWindowText(hWnd, "#42") End If MyBase.OnResize(e) End Sub 'OnResize
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  10. 4.为什么我不能显示一个已经关闭了的窗体?
  11. 关闭 答案:
    一旦一个窗体关闭,它就会被处置,因此可能被系统回收垃圾,所以试图显示已关闭的窗体是不安全的。一种替代的解决方案是使用 Form.Hide 和 Form.Show 来分别隐藏和显示窗体。
  12. 关闭 答案:

    一旦一个窗体关闭,它就会被处置,因此可能被系统回收垃圾,所以试图显示已关闭的窗体是不安全的。一种替代的解决方案是使用 Form.Hide 和 Form.Show 来分别隐藏和显示窗体。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  13. 5.哪种关闭窗体的方法更合适:Application.Exit 还是 Form.Close?
  14. 关闭 答案:
    Application.Exit 是一种强行退出方式,就像 Win32 的 PostQuitMessage()。它意味着放弃所有消息泵,展开调用堆栈,并将执���返回给系统。 在 Windows(Win32 或 .NET)中
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  15. 关闭 答案:

    Application.Exit 是一种强行退出方式,就像 Win32 的 PostQuitMessage()。它意味着放弃所有消息泵,展开调用堆栈,并将执���返回给系统。

    在 Windows(Win32 或 .NET)中关闭应用程序的正确方式是关闭它的主应用程序窗口(例如 Form.Close)。主消息泵结束后依然存在的任何窗口都需要手动关闭。在应用程序退出之前通过调用 Form.Close 或 Form.Dispose 来关闭窗口是清除窗口的良好做法,但这需要您有意识地去做。我们需要记住,.NET Framework 的 OnClosing() 是 Win32 的托管版本的 WM_CLOSE,而非 WM_DESTROY。

    另外,如果您使用 form.Close(),通过处理 OnClosing 或 OnClosed 事件,就可以让您的应用程序清理内容、关闭文件等。如果您通过 Application.Exit 强行退出应用程序,就无法调用这些事件。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  16. 6.我有一个含有许多控件的智能设备窗体。为什么会在运行时得到“NotSupportedException”?
  17. 关闭 答案:
    如果您有一个含有许多控件的窗体,当您运行应用程序时可能会得到 NotSupportedException。如果您在调试器下运行,则可能会发现异常是由调用窗体构造函数中的 InitializeComponent() 引发的。您最
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  18. 关闭 答案:

    如果您有一个含有许多控件的窗体,当您运行应用程序时可能会得到 NotSupportedException。如果您在调试器下运行,则可能会发现异常是由调用窗体构造函数中的 InitializeComponent() 引发的。您最可能遇到的一个事实是 Compact Framework CLR 硬性限制每个方法只有 64KB JITed 代码。这意味着当 CLR 将 IL 转换为方法(在本例中为 InitializeComponent 方法)时,产生的本机代码必须少于 64KB。如果产生的本机代码大于此值,则会引发 NotSupportedException。也可能出现的情况是,当在调试器下运行(例如通过 F5)时会看到异常,但不带调试器运行(通过 Ctrl-F5)时不会有异常。当 JITed 代码的大小非常接近于 64KB 限制时就会出现这种情况,因为调试器在运行时需要生成其他一些代码。

    也可能出现的情况是,在设备中会产生这种异常,但在模拟器中不会(或反之),因为处理器家族之间 JITed 代码的大小有所不同(例如,许多基于 Windows Mobile 的 Pocket PC 设备使用 ARM 指令,而模拟器使用 x86 指令)。

    超出此限制之前,窗体中可含有的控件数并没有一个固定的值。这是因为设计器生成的代码量因控件而异。例如,Button 控件通常生成的代码少于 TabControl 生成的代码,这取决于控件属性的设置方式。如果您通过属性网格中的生成器为控件填充集合,则拥有集合的控件(比如 ListBox 或 TreeView 控件)会生成大量代码。另外,本地化窗体(其 Localizable 属性设置为 True)中控件生成的代码会比非本地化窗体多,因为 InitializeComponent 中生成的代码会根据来自资源文件的值设置属性,而不是使用硬编码的值。

    如果您碰到这种问题,有几种不同的技术可以使用:

    将一个窗体分割成多个窗体。将大量控件放在一个窗体中对窗体加载和应用程序启动时间也有不利的影响。如果可能,要将 UI 分在两个或更多的窗体中。

    不要通过设计时生成器填充大的内部控件集合。例如,如果您在 TreeView 控件的 Nodes 集合中添加许多节点,就会在 InitializeComponent 方法中额外添加大量代码。如果可能,应该移动这些代码,使集合填充到构造函数或 Form.Load 事件处理程序中。这种技术的缺点是集合将无法很容易地通过设计器编辑,但有助于调整生成代码的大小。

    不要将自己的代码添加到 InitializeComponent 方法中。这通常是一个很好的指导原则,因为在这个方法中修改或添加由设计器生成的代码是不受支持的。这样做也会导致设计器中出现意外行为。如果您要将自己的自定义启动代码添加到窗体中,就应该将它放在构造函数或 Form.Load 事件处理程序中。

    在运行时以编程方式初始化类似的控件。例如,如果您创建了 12 个 Button 控件,它们只有 Text 和 Position 属性不同,则您可以考虑通过一个循环来创建和初始化,而不是让这 12 个控件都在设计器生成的代码中创建和初始化。另外,如果您自己编写代码实现,不要将代码放在 InitializeComponent 中。

    修改 InitializeComponent 的一个令人遗憾的负面影响是:在 InitializeComponent 外的代码中实例化的任何控件都无法使用窗体设计器编辑。另外,如果您手动编辑 InitializeComponent 中的代码,则会发现设计器可能无法正确解释您修改过的代码,从而不再呈现窗体。基于这些原因,最好选择上面列出的不修改 InitializeComponent 的解决办法。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  19. 7.何时应该使用窗体构造函数,何时应该使用 Load 函数?
  20. 关闭 答案:
    对于任何涉及 UI 的窗体,最好使用窗体的 load 函数。在构造函数中加载和创建数据和控件的实例通常是安全的。然而,任何涉及 UI 元素的控件或窗体的初始化都应该在 load 函数中完成。例如,在构
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  21. 关闭 答案:

    对于任何涉及 UI 的窗体,最好使用窗体的 load 函数。在构造函数中加载和创建数据和控件的实例通常是安全的。然而,任何涉及 UI 元素的控件或窗体的初始化都应该在 load 函数中完成。例如,在构造函数中创建控件的实例并添加到窗体中是安全的,但控件位置的设置就应该在 load 函数中完成。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  22. 8.如何以编程方式替换全局程序集缓存 (GAC) 中的程序集?
  23. 关闭 答案:
    可以通过以编程方式启动 cgacutil 来直接在 GAC 中安装程序集和从 GAC 中删除程序集。 使用 -u 选项可以从 GAC 删除程序集 使用 -i 选项可以在 GAC 中安装程序集 通常最安全的做
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  24. 关闭 答案:

    可以通过以编程方式启动 cgacutil 来直接在 GAC 中安装程序集和从 GAC 中删除程序集。

    使用 -u 选项可以从 GAC 删除程序集

    使用 -i 选项可以在 GAC 中安装程序集

    通常最安全的做法是重新安装一个程序集之前先将它删除。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  25. 9.如何将 imgdecmp.dll 包括在模拟器映像中?
  26. 关闭 答案:
    您必须让 OEM 将它包括在设备的映像中。如果您就是 OEM 而且您正在使用 Platform Builder 4.2,则包括 .NET 项目的 OS 依赖项会自动使 imgdecmp.dll 成为模拟器映像的一部分 — 如果这样不行则再
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  27. 关闭 答案:

    您必须让 OEM 将它包括在设备的映像中。如果您就是 OEM 而且您正在使用 Platform Builder 4.2,则包括 .NET 项目的 OS 依赖项会自动使 imgdecmp.dll 成为模拟器映像的一部分 — 如果这样不行则再引用 cesysgen.bat。另一种方法是设置环境变量“__SYSGEN_IMGDECMP=1”,显式强制该 DLL 包含在映像中。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  28. 10.什么是 .NET Compact Framework 的足迹?
  29. 关闭 答案:
    .NET Compact Framework 存储大小: 在基于 Windows Mobile 的 Pocket PC 2000/2002 上有 1.55MB (ROM) 在用于 Pocket PC 2003 或 Windows CE .NET 设备的 Windows Mobile 上有 1.35MB
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  30. 关闭 答案:

    .NET Compact Framework 存储大小:

    在基于 Windows Mobile 的 Pocket PC 2000/2002 上有 1.55MB (ROM)

    在用于 Pocket PC 2003 或 Windows CE .NET 设备的 Windows Mobile 上有 1.35MB (ROM)

    运行 RAM 的要求:

    .5 MB+(取决于应用程序)

    典型的应用程序大小:

    5 - 100 KB

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  31. 11.如何确定设备中安装的 .NET Compact Framework 的版本?
  32. 关闭 答案:
    发行的每个 .NET Compact Framework 版本都有一个不同的 Win32 文件版本号(它是与程序集版本相独立的版本号,对于发行的所有 .NET Compact Framework 第一版(包括 Service Pack),这两者应该
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  33. 关闭 答案:

    发行的每个 .NET Compact Framework 版本都有一个不同的 Win32 文件版本号(它是与程序集版本相独立的版本号,对于发行的所有 .NET Compact Framework 第一版(包括 Service Pack),这两者应该是一样的)。

    要查看安装的是什么版本,可以使用文件资源管理器,定位于设备的 \Windows 目录,并单击名为 CGACUTIL 的文件。将会弹出一个消息框,显示安装在设备中的 .NET Compact Framework 的 Win32 文件版本。

    RTM = 1.0.2268.0SP1 = 1.0.3111.0SP2 Recall = 1.0.3226.0SP2 Beta = 1.0.3227.0SP2 Final = 1.0.3316.0

    要以编程方式确定版本,可以使用 System.Environment.Version.ToString()。

    要通过桌面安装程序确定版本,请参见本 FAQ 中标题为 “3.10.如何通过桌面安装程序检测 .NET Compact Framework 的版本?”的项。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  34. 12.所有这些 ARM 二进制是些什么?
  35. 关闭 答案:
    XScale 支持 ARM v5 指令集,不过它也向后兼容 ARMv4 指令集。它有三个变种: ARMv4 -> 它只支持 32 位 ARMv4 指令 ARMv4T ->“T”代表 Thumb。Thumb 是 ARM 16 位指令模式
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  36. 关闭 答案:

    XScale 支持 ARM v5 指令集,不过它也向后兼容 ARMv4 指令集。它有三个变种:

    ARMv4 -> 它只支持 32 位 ARMv4 指令

    ARMv4T ->“T”代表 Thumb。Thumb 是 ARM 16 位指令模式

    ARMv4I ->“I”代表交互作用 (Interworking)。它允许 32 位指令和 16 位指令共存

    对于其他的 ARM 处理器:

    StrongARM (SA1110) -> 只支持 ARMv4 指令

    ARM920T 等 -> 通常支持这三个变种

    .NET Compact Framework 将提供三组用于 ARM 的二进制。

    用于基于 Windows Mobile 2000 和基于 Windows Mobile 2002 的 Pocket PC 2002 的 ARMv4。它将运行 ARM 设备(包括 Xscale)的所有 ARM。部署到这些设备中的 cab 只能在名称中包含“arm”。

    用于 Windows CE.NET 的 ARMv4。它将运行在通过 Platform Builder 中的 ARMv4 内核编译的 Windows CE.NET 设备中。它也是用于基于 Windows Mobile 的 Pocket PC 2003 的二进制。为这些设备部署的 cab 在名称中包含“armv4”。

    用于 Windows CE.NET 的 ARMv4T 或 ARMv4I。它将运行在通过 Platform builder 中的 ARMv4T 或 ARMv4I 内核编译的 Windows CE.NET 设备中。部署到这些设备中的 cab 在名称中包含“armv4T”。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  37. 13.如何设置模拟器属性?
  38. 关闭 答案:
    在 Visual Studio .NET 2003 中,从菜单中选择 Tools->Options。然后打开 Device Tools 文件夹并选择 Devices。现在应该能看到一个显示设备选择列表的对话框。选择您想要修改的设备,然后按
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  39. 关闭 答案:

    在 Visual Studio .NET 2003 中,从菜单中选择 Tools->Options。然后打开 Device Tools 文件夹并选择 Devices。现在应该能看到一个显示设备选择列表的对话框。选择您想要修改的设备,然后按 Configure 按钮。

    现在您应该能够看到一个含有几个选项卡的对话框,它允许您访问和修改设置,例如内存和屏幕大小。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  40. 14.如何指定在每次调试器运行时不必复制依赖文件?
  41. 关闭 答案:
    在 Visual Studio .NET 2003 中,右键单击该项目并选择 Properties。将 Build Action 更改为 None。这样就不会再复制此文件了。如果此文件已修改或者需要再复制,则将 Build Action 更改为 Cont
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  42. 关闭 答案:

    在 Visual Studio .NET 2003 中,右键单击该项目并选择 Properties。将 Build Action 更改为 None。这样就不会再复制此文件了。如果此文件已修改或者需要再复制,则将 Build Action 更改为 Content。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  43. 15.以后 .NET Compact Framework 将会支持什么设备?
  44. 关闭 答案:
    不久以后,.NET Compact Framework 将会作为一个操作系统 (OS) 组件,在所有的 Microsoft 智能设备中提供,包括将来基于 Windows Mobile 的 Pocket PC 设备、基于 Windows Mobile 的 Pocket PC
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  45. 关闭 答案:

    不久以后,.NET Compact Framework 将会作为一个操作系统 (OS) 组件,在所有的 Microsoft 智能设备中提供,包括将来基于 Windows Mobile 的 Pocket PC 设备、基于 Windows Mobile 的 Pocket PC Phone Edition、基于 Windows Mobile 的 Smartphone、Windows CE for Automotive 和 MSTV。每种特定设备的具体时间选择将由各个产品发布周期确定。

    Windows CE .NET 4.1 也支持 .NET Compact Framework,将其作为一个集成的 OS 组件,因此允许 OEM 使用 Platform Builder 工具将 .NET Compact Framework 嵌入到所有装备 Windows CE 的新设备中。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  46. 16.NET Compact Framework 支持什么设备?
  47. 关闭 答案:
    NET Compact Framework 支持基于 Windows Mobile 2000 的 Pocket PC、基于 Windows Mobile 2002 的 Pocket PC、基于 Windows Mobile 2003 的 Pocket PC、基于 Windows Mobile 的 Smartphone 和运
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  48. 关闭 答案:
    NET Compact Framework 支持基于 Windows Mobile 2000 的 Pocket PC、基于 Windows Mobile 2002 的 Pocket PC、基于 Windows Mobile 2003 的 Pocket PC、基于 Windows Mobile 的 Smartphone 和运行 Windows CE .NET 4.1 及更高版本的嵌入式系统。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  49. 17.开发 .NET Compact Framework 应用程序需要什么工具?
  50. 关闭 答案:
    Visual Studio .NET 为基于 Windows Mobile 的 Pocket PC 2000、基于 Windows Mobile 的 Pocket PC 2002 和 Windows CE .NET 4.1 设备开发基于 .NET Compact Framework 的应用程序需要 2003 Pro
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  51. 关闭 答案:

    Visual Studio .NET 为基于 Windows Mobile 的 Pocket PC 2000、基于 Windows Mobile 的 Pocket PC 2002 和 Windows CE .NET 4.1 设备开发基于 .NET Compact Framework 的应用程序需要 2003 Professional 或更高版本。Visual Studio .NET 2003 附带了 .NET Compact Framework。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  52. 18.什么是 Microsoft .NET Compact Framework?
  53. 关闭 答案:
    Microsoft .NET Compact Framework 是针对 Microsoft .NET 计划的智能设备开发框架,是实现 Microsoft 随时随地在任何设备上为客户提供良好体验的目标的关键所在。.NET Compact Framework 将托管
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  54. 关闭 答案:

    Microsoft .NET Compact Framework 是针对 Microsoft .NET 计划的智能设备开发框架,是实现 Microsoft 随时随地在任何设备上为客户提供良好体验的目标的关键所在。.NET Compact Framework 将托管代码和 Web 服务带给了智能设备,它允许安全的、可下载的应用程序在诸如个人数字助理 (PDA)、移动电话和机顶盒等设备上运行。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  55. 19.IDirectPlay8LobbyClient::Initialize 为何返回 DPNERR_NOTALLOWED?
  56. 关闭 答案:
    DirectPlay 不允许每个进程有一个以上的前端客户端或应用程序,因而试图创建多个客户端会导致返回这一错误。
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  57. 关闭 答案:
    DirectPlay 不允许每个进程有一个以上的前端客户端或应用程序,因而试图创建多个客户端会导致返回这一错误。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  58. 20.DPNSVR 是做什么用的?
  59. 关闭 答案:
    DPNSVR 是一种用于枚举请求的转发服务,消除了多个 DirectPlay 应用程序在端口使用上的冲突所导致的各种问题。使用 DPNSVR 使得 DirectPlay 能够自动选择要使用的端口,同时又允许客户端对您的游
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  60. 关闭 答案:
    DPNSVR 是一种用于枚举请求的转发服务,消除了多个 DirectPlay 应用程序在端口使用上的冲突所导致的各种问题。使用 DPNSVR 使得 DirectPlay 能够自动选择要使用的端口,同时又允许客户端对您的游戏进行枚举。默认为,DirectPlay 会使用 DPNSVR,因为这通常为应用程序提供了最大的灵活性;但是,您可以将其禁用,方法是在创建您的会话时指定 DPNSESSION_NODPNSVR 标志。如果客户端使用 DPNSVR 端口来枚举主机,而主机又使用自己的端口来作出响应的话,使用 DPNSVR 可能会导致客户端一侧的 NAT 发生问题;NAT 可能会拒绝将数据包转递给客户端,因为数据包不是来自请求被发往的同一端口。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  61. 21.我如何确保我的游戏将能够与各种网络地址转换器和Internet连接共享设置正常工作?
  62. 关闭 答案:
    网络地址转换器(Network Address Translator,NAT)和Internet连接共享(Internet Connection Sharing,ICS)是较为复杂的主题,在 MSDN 上的另一篇文章中有更详尽的论述。但是,下列提示可以作
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  63. 关闭 答案:
    网络地址转换器(Network Address Translator,NAT)和Internet连接共享(Internet Connection Sharing,ICS)是较为复杂的主题,在 MSDN 上的另一篇文章中有更详尽的论述。但是,下列提示可以作为
    很好的一般性指导:Nats2-msdn.htm。 ·通过 IDirectPlay8Client 和 IDirectPlay8Server 接口,使用一种客户端 — 服务器而不是点对点网络拓扑。 ·将服务器放在清澈的 Internet 上,而不是在一个 NAT 后面。 ·直接枚举游戏端口,而不是使用 DPNSVR。 ·不要在您的消息中内嵌 IP 地址或端口号。

    有关点对点游戏、将服务器驻于 NAT 后面的事宜,以及针对各种不同的 Windows 操作系统上的 ICS 的具体建议,请参考更详尽的文档。

    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  64. 22.我的应用程序启动时,为何为发出一阵净噪声?
  65. 关闭 答案:
    我注意到其它应用程序也有这个问题。您可能安装了调试用 DirectX 运行时。运行时的调试版本用静噪声填充缓冲区,以便帮助开发人员捕捉未经初始化缓冲区的缺陷。您无法保证DirectSound 缓冲区在创
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  66. 关闭 答案:
    我注意到其它应用程序也有这个问题。您可能安装了调试用 DirectX 运行时。运行时的调试版本用静噪声填充缓冲区,以便帮助开发人员捕捉未经初始化缓冲区的缺陷。您无法保证DirectSound 缓冲区在创建后的内容;尤其是您无法将缓冲区清零。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  67. 23.对于字体描绘,我应当使用 ID3DXFont 还是 SDK 框架 CD3DFont 类?
  68. 关闭 答案:
    ID3DXFont 类能够处理字间距,因为它使用 GDI 来绘制字符串。这可能会有点慢,因为每次均需要调用GDI。 CD3DFont 设计用于加速和使用纹理化基本类型来绘制字符。它只能处理简单字体,并不支持
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  69. 关闭 答案:
    ID3DXFont 类能够处理字间距,因为它使用 GDI 来绘制字符串。这可能会有点慢,因为每次均需要调用GDI。
    CD3DFont 设计用于加速和使用纹理化基本类型来绘制字符。它只能处理简单字体,并不支持 ID3DXFont 可用的全套格式选项,但适用于简单而快速的显示,诸如帧速率计数等等。对于产品代码,您可能需要实施您自己的字形描绘功能,即借助纹理化基本类型和/或基于GDI 的方案(带避免重新绘制的缓存功能)。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  70. 24.D3DX 中的文字描绘函数好象失效,我的操作有什么问题吗?
  71. 关闭 答案:
    使用 ID3DXFont::DrawText 功能时的一个常见错误就是为颜色参数指定一个零 alpha 组件,从而导致完全透明(即不可见)的文本。对于完全不透明的文本,请确保色彩参数的 alpha 成分完全饱和(255
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  72. 关闭 答案:
    使用 ID3DXFont::DrawText 功能时的一个常见错误就是为颜色参数指定一个零 alpha 组件,从而导致完全透明(即不可见)的文本。对于完全不透明的文本,请确保色彩参数的 alpha 成分完全饱和(255)。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  73. 25.D3DX 图象文件加载器函数支持哪些文件格式?
  74. 关闭 答案:
    D3DX 图象文件加载器函数支持 BMP、TGA、PNG、JPG、DIB、PPM 和 DDS 文件。
  75. 关闭 答案:
    D3DX 图象文件加载器函数支持 BMP、TGA、PNG、JPG、DIB、PPM 和 DDS 文件。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  76. 26.如果我要生成动态数据,怎样才算是较好地使用顶点缓冲区了呢?
  77. 关闭 答案:
    具体的实施步骤。 借助 D3DUSAGE_DYNAMIC 和 D3DUSAGE_WRITEONLY 使用标志以及 D3DPOOL_DEFAULT 缓冲池标志来创建一个顶点缓冲区。(如果您正使用软件顶点处理功能的话,还要指定 D3DUSAGE_SOF
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  78. 关闭 答案:
    具体的实施步骤。 借助 D3DUSAGE_DYNAMIC 和 D3DUSAGE_WRITEONLY 使用标志以及 D3DPOOL_DEFAULT 缓冲池标志来创建一个顶点缓冲区。(如果您正使用软件顶点处理功能的话,还要指定 D3DUSAGE_SOFTWAREPROCESSING) I = 0 设置状态(纹理、描绘状态等) 检查缓冲区内是否有空间,即 i.e.I + M <= N? (其中 M 是新顶点的数目) 如果为真,则借助 D3DLOCK_NOOVERWRITE 对 VB 进行 Lock (锁定)。这告知 Direct3D 和驱动程序,您将要添加顶点,而并不修改您先前批处理过的顶点。因此,如果当时正在进行一项DMA 操作,则并不中断该操作。否则,转至 11 在 I 处填充 M 个顶点 解锁 (Unlock) 调用 Draw[Indexed]Primitive。对于未经索引的,请将 I 用作 StartVertex 参数。对于已编索的基本类型,请确保索引指向顶点缓冲区的正确部分(要做到这一点,使用 SetIndices 调用的 BaseVertexIndex 参数可能最为容易) I + = M 转到 3 好,空间已用尽,就让我们开始一个新的顶点缓冲区。我们不想使用同一个顶点缓冲区,因为有可能有一个 DMA 操作正在进行之中。我们将这一情形告知 Direct3D, 方法是借助 D3DLOCK_DISCARD 标志,将“同一个”顶点缓冲区锁定。这意思是,“你可以给我一个新的指针了,因为我已用完旧的指针,不再在意旧的内容。” I = 0 转至 4(或 6)
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  79. 27.我应当使用哪些基本类型(条形、扇形、列表等)?
  80. 关闭 答案:
    在真实数据中遇到的许多网格,都具有多个多边形共享顶点的特性。为将性能最大化,最好将所转换的顶点中的重复率降低,并横跨总线将其发给描绘设备。使用简单的三角列表根本实现不了任何顶点共享
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  81. 关闭 答案:
    在真实数据中遇到的许多网格,都具有多个多边形共享顶点的特性。为将性能最大化,最好将所转换的顶点中的重复率降低,并横跨总线将其发给描绘设备。使用简单的三角列表根本实现不了任何顶点共享,因而这是最不理想的方法。这一点已很清楚。然后所要作的选择就是使用条形和扇形(暗示多边形之间的具体连接关系),还是使用索引列表。在数据自然归入各种条形和扇形的情况下,这些就是最为合适的选择,因为发给驱动程序的数据被降至最低。但是,将网格分解条形和扇形经常会造成大量分离块,暗示有大量的 DrawPrimitive 调用。因此,最富效率的方法通常是使用带三角列表的单独一个 DrawIndexedPrimitive 调用。使用索引列表的另一个优势就是,这在连续三角形仅共享单独一个顶点时也有益处。总而言之,如果您的数据自然归入各种较大的条形和扇形,就使用条形和扇形,否则就使用索引列表。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  82. 28.我如何能够改善我的 Direct3D 应用程序的性能?
  83. 关闭 答案:
    在优化性能时,需要考察下列几个关键问题: ·批处理大小 Direct3D 已为大批量原语进行过优化。一次调用所能发送的多边形越多,其效果也就越好。凭经验而论,建议平均每次调用100 个以上的多边形
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  84. 关闭 答案:
    在优化性能时,需要考察下列几个关键问题: ·批处理大小 Direct3D 已为大批量原语进行过优化。一次调用所能发送的多边形越多,其效果也就越好。凭经验而论,建议平均每次调用100 个以上的多边形。低于该水平,您可能不会得到最好的性能,而高于该水平,您收到的效果会递减,且可能会与并行事项发生冲突(参见下面的论述)。 ·状态更改 更改描绘状态这种操作可能会很昂贵,尤其是在更改纹理时。因此,每帧所作的状态更改应尽可能地少,这一点很重要。另外,请尽量降低对顶点或索引缓冲区的更改。注意:在 DirectX 中更改缓冲区已不在象在以前版本中那样昂贵了,但依旧建议尽量避免更改顶点缓冲区。 ·并行 如果能够安排描绘与其它处理同时进行,则您可以充分利用系统性能。这一目标可能会与降低描绘状态更改的目标相抵触。您需要在进行批处理以降低状态更改和较早将数据推出到驱动程序以达到并行目的之间找到一个平衡点。以循环方式使用多个顶点缓冲区,会有助于并行功能。 ·纹理上载 将纹理上载到设备会消耗带宽并导致与顶点数据争用带宽。因此,不要占用过多的内存这一点很重要,因为这会强制缓存方案为每一帧上载过多的纹理。 ·顶点缓冲区和索引缓冲区 您应当一直使用顶点缓冲区和索引缓冲区,而不是由应用程序分配的普通内存块。顶点缓冲区和索引缓冲区的锁定语义至少可以避免多于的复制操作。对于某些驱动程序,顶点缓冲区和索引缓冲区可能是更理想的存储器中的某些区域(可能是在视频或 AGP 存储器中),供硬件进行访问。 ·状态宏锁定 这些是在 DirectX 7.0 中推出的,为将一系列的状态更改(包括照明、材质和矩阵更改)记录成一个宏提供了一个机制,该宏然后就可以通过单一的调用来重放了。这有两个优势: 您进行一次调用而不是多次调用,从而降低调用开销。 有感悟能力的驱动程序可以对状态更改进行预分析和预编译,从而使到图形硬件的提交速度快得多。状态更改可能依旧很昂贵,但使用状态宏至少会有助于降低部分成本。 ·仅使用单独一个 Direct3D 设备 如果您需要描绘到多个目标,则请使用 SetRenderTarget。如果您是要创建一个带有多个 3D 窗口的窗口化程序,则请使用 CreateAdditionalSwapChain API。运行时已为单一设备进行过优化,使用多个设备时会有相当多的速度折扣。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  85. 29.将多重顶点流用于固定功能流水线有何限制?
  86. 关闭 答案:
    固定功能流水线要求每条顶点流水线是一个严格的 FVF 子集,即根据一个完整的 FVF 声明预定的。另外请注意,您必须遵从 D3DCAPS8::MaxStreams 字段所报告的流水线数目的限制(现在的许多设备和/或
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  87. 关闭 答案:
    固定功能流水线要求每条顶点流水线是一个严格的 FVF 子集,即根据一个完整的 FVF 声明预定的。另外请注意,您必须遵从 D3DCAPS8::MaxStreams 字段所报告的流水线数目的限制(现在的许多设备和/或驱动程序仅支持单一流水线)。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  88. 30.索引缓冲区是什么?
  89. 关闭 答案:
    索引缓冲区与顶点缓冲区极其类似,但其包含的是用于 DrawIndexedPrimitive 调用的索引。强烈建议您尽可能使用索引缓冲区,而不要使用原始的由应用程序分配的内存,其道理与顶点缓冲区相同。 我
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  90. 关闭 答案:
    索引缓冲区与顶点缓冲区极其类似,但其包含的是用于 DrawIndexedPrimitive 调用的索引。强烈建议您尽可能使用索引缓冲区,而不要使用原始的由应用程序分配的内存,其道理与顶点缓冲区相同。
    我注意到 32 位的索引现在是一种支持类型;我可以将其用在所有的设备上吗? 不可以。你必须检查 D3DCAPS8::MaxVertexIndex 字段,以确定设备所支持的最大索引值。该值必须大于 216-1 (0xffff)才能支持 D3DFMT_INDEX32 类型的索引缓冲区。另外请注意,某些设备可能支持 32 位的索引,但其所支持的最大索引值却小于 232- 1 (0xffffffff);这样,应用程序必须遵从设备所报告的限制。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  91. 31.在我提交一列带索引的原语时,Direct3D是处理缓冲区中所有的顶点,还是只处理我索引过的顶点?
  92. 关闭 答案:
    在使用软件几何流水线时,Direct3D 首先转换您所提交的范围中的所有的顶点,而不是“根据要求”按照索引对其进行转换。这对于密集数据(即其中使用了大多数的顶点)效率更高,尤其是在可以使用
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  93. 关闭 答案:
    在使用软件几何流水线时,Direct3D 首先转换您所提交的范围中的所有的顶点,而不是“根据要求”按照索引对其进行转换。这对于密集数据(即其中使用了大多数的顶点)效率更高,尤其是在可以使用 SIMD 指令时。如果您的数据比较松散(即很多顶点未被使用),则您可能需要考虑重新排列您的数据,以避免多余的转换。在使用硬件几何加速时,顶点经常是根据需要进行转换的。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  94. 32.我可以在带有不同纹理坐标的顶点之间共享位置数据吗?
  95. 关闭 答案:
    该情形的一个通常示例就是一个立方体,其中您想为每个面使用一个不同的纹理。很不幸,答案是不行;目前还还不能独立索引每个顶点组件。即使是多顶点流,也是所有的顶点一起索引。
  96. 关闭 答案:
    该情形的一个通常示例就是一个立方体,其中您想为每个面使用一个不同的纹理。很不幸,答案是不行;目前还还不能独立索引每个顶点组件。即使是多顶点流,也是所有的顶点一起索引。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  97. 33.有多少个常量寄存器可以用于顶点着色器?
  98. 关闭 答案:
    要求支持 DX8 顶点着色器的设备至少支持 96 个常量寄存器。设备的支持能力可能会超过这一最低数目,且可以通过 D3DCAPS8::MaxVertexShaderConst 字段进行报告。
  99. 关闭 答案:
    要求支持 DX8 顶点着色器的设备至少支持 96 个常量寄存器。设备的支持能力可能会超过这一最低数目,且可以通过 D3DCAPS8::MaxVertexShaderConst 字段进行报告。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  100. 34.我如何确定硬件是否支持我的定制的顶点着色器?
  101. 关闭 答案:
    能够硬件支持顶点着色器的设备被要求填充 D3DCAPS8::VertexShaderVersion 字段,以指示其所支持的顶点着色器的版本级别。所有声称支持某一级别的顶点着色器的设备,必须支持所有合法的顶点着色器
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  102. 关闭 答案:
    能够硬件支持顶点着色器的设备被要求填充 D3DCAPS8::VertexShaderVersion 字段,以指示其所支持的顶点着色器的版本级别。所有声称支持某一级别的顶点着色器的设备,必须支持所有合法的顶点着色器,这些顶点着色器符合针对该级别或较低级别的规范。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  103. 35.如果我的硬件并不支持定制的顶点着色器,我可以使用吗?
  104. 关闭 答案:
    可以。Direct3D 软件顶点处理引擎完全支持定制的顶点着色器,且性能指标出奇的高。
  105. 关闭 答案:
    可以。Direct3D 软件顶点处理引擎完全支持定制的顶点着色器,且性能指标出奇的高。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  106. 36.我能将一个定制的顶点着色器应用到固定功能几何流水线(或者进行相反的操作)吗?
  107. 关闭 答案:
    不能。您必须选择其一。如果您正在使用一个定制的顶点着色器,则您负责进行整个顶点变换操作。
  108. 关闭 答案:
    不能。您必须选择其一。如果您正在使用一个定制的顶点着色器,则您负责进行整个顶点变换操作。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  109. 37.我能借助顶点着色器生成几何图形吗?
  110. 关闭 答案:
    顶点着色器无法创建或消灭顶点;其一次只对单一顶点进行操作,即作为输入接收一个未经处理的顶点,而输出单独一个经过处理的顶点。因此可以将其用于操作已有的几何图形(应用变形或进行外观变换
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  111. 关闭 答案:
    顶点着色器无法创建或消灭顶点;其一次只对单一顶点进行操作,即作为输入接收一个未经处理的顶点,而输出单独一个经过处理的顶点。因此可以将其用于操作已有的几何图形(应用变形或进行外观变换操作),但实际上无法生成新的几何图形
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  112. 38.顶点着色器进行透视划分或剪裁吗?
  113. 关闭 答案:
    不。顶点着色器在已变换的顶点位置的剪贴空间输出一个纯系坐标。透视分割和剪裁是由后着色器自动进行的。
  114. 关闭 答案:
    不。顶点着色器在已变换的顶点位置的剪贴空间输出一个纯系坐标。透视分割和剪裁是由后着色器自动进行的。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  115. 39.顶点着色器是什么?
  116. 关闭 答案:
    顶点着色器是一个用于处理单一顶点的过程。这是借助一种类似于汇编的简单语言来进行定义的,由 D3DX 实用程序汇编为一个 Direct3D 接受的令牌流。顶点着色器接受单独一个顶点和一组常量值的输入
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  117. 关闭 答案:
    顶点着色器是一个用于处理单一顶点的过程。这是借助一种类似于汇编的简单语言来进行定义的,由 D3DX 实用程序汇编为一个 Direct3D 接受的令牌流。顶点着色器接受单独一个顶点和一组常量值的输入,并输出一个顶点位置(在剪贴空间),还可能输出一组用于光栅化的颜色和纹理坐标。请注意,在您有一个定制的顶点着色器时,顶点组件就不再有任何由 Direct3D 施加给它们的语义,而顶点就只是由您所创建的顶点着色器进行解释的任意数据。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  118. 40.我对顶点流不大清楚,其工作原理如何?
  119. 关闭 答案:
    Direct3D 对从一个或多个顶点流馈入流水线的每个顶点进行组装。只有一个顶点流时,就对应于 DirectX 8 以前的老模型,即顶点来自单独一个源。借助 DirectX 8,不同的顶点组件可以来自不同的源;
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  120. 关闭 答案:
    Direct3D 对从一个或多个顶点流馈入流水线的每个顶点进行组装。只有一个顶点流时,就对应于 DirectX 8 以前的老模型,即顶点来自单独一个源。借助 DirectX 8,不同的顶点组件可以来自不同的源;例如,一个顶点缓冲区可能含有位置和法线,而另一个则含有颜色值和纹理坐标。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  121. 41.D3DVERTEX 等等顶点类型有何变动?
  122. 关闭 答案:
    不再显式支持“预罐装”的顶点类型。多重顶点流系统允许对顶点数据进行更加灵活的装配。如果您想使用其中一个“传统”的顶点格式,则您可以建立一套相应的FVF 代码。
  123. 关闭 答案:
    不再显式支持“预罐装”的顶点类型。多重顶点流系统允许对顶点数据进行更加灵活的装配。如果您想使用其中一个“传统”的顶点格式,则您可以建立一套相应的FVF 代码。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  124. 42.我如何枚举多监视器系统中的所有显示设备?
  125. 关闭 答案:
    与其它的枚举功能相同,该功能已从基于回调变为由应用程序借助 IDirect3D8 接口的各种方法来进行简单的反复。调用 GetAdapterCount 来确定系统中显示适配器的数目。调用 GetAdapterMonitor 来确
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  126. 关闭 答案:
    与其它的枚举功能相同,该功能已从基于回调变为由应用程序借助 IDirect3D8 接口的各种方法来进行简单的反复。调用 GetAdapterCount 来确定系统中显示适配器的数目。调用 GetAdapterMonitor 来确定适配器所连接的物理监视器(该方法返回一个HMONITOR,您然后就可以在 Win32 API GetMonitorInfo 中使用该值,以确定关于物理监视器的信息)。确定某一具体显示适配器的特征,或在该适配器上创建一个 Direct3D 设备,简单到在调用 GetDeviceCaps、CreateDevice 或其它方法时,通过替代 D3DADAPTER_DEFAULT 来传递相应的适配器编号。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  127. 43.我如何使用颜色键控?
  128. 关闭 答案:
    DirectX 8 并不支持颜色键控。您应当换用 alpha 混色/测试,大体上这是一个更加灵活的技巧,没有与颜色键控相关的一些问题。
  129. 关闭 答案:
    DirectX 8 并不支持颜色键控。您应当换用 alpha 混色/测试,大体上这是一个更加灵活的技巧,没有与颜色键控相关的一些问题。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  130. 44.D3DCREATE_PUREDEVICE 标志有何用途?
  131. 关闭 答案:
    如果在创建设备时指定了 D3DCREATE_PUREDEVICE 标志,则 Direct3D 将创建一个“纯粹”的设备。这禁用 Get* 族类的方法,并使顶点处理仅限于硬件。这使得 Direct3D 运行时能够进行某些优化,以提
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  132. 关闭 答案:
    如果在创建设备时指定了 D3DCREATE_PUREDEVICE 标志,则 Direct3D 将创建一个“纯粹”的设备。这禁用 Get* 族类的方法,并使顶点处理仅限于硬件。这使得 Direct3D 运行时能够进行某些优化,以提供到驱动程序的最佳路径,而不必跟踪那么多的内部状态。也就是说,您使用 PUREDEVICE 时可以见到一定的性能优势,但却牺牲了某些便利条件。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  133. 45.Texel(特塞尔)对齐规则是什么?我怎样才能得到一一映射?
  134. 关闭 答案:
    这一点在 DirectX 8 文档中(Directly Mapping Texels to Pixels)得到了全面的解释。但是总而言之,您应将屏幕坐标偏移一个像素的 –0.5,以便正确地与 Texel 对齐。大多数的插卡正确符合对齐�
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  135. 关闭 答案:
    这一点在 DirectX 8 文档中(Directly Mapping Texels to Pixels)得到了全面的解释。但是总而言之,您应将屏幕坐标偏移一个像素的 –0.5,以便正确地与 Texel 对齐。大多数的插卡正确符合对齐规则,但是有一些较老的插卡或驱动程序则不然。要解决这些问题,建议您最好与相关的硬件厂商取得联系,请求得到更新过的应驱动程序或其所建议的变通办法。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  136. 46.我如何使用模板缓冲区来描绘阴影量?
  137. 关闭 答案:
    这一效果以及其它体积模板缓冲区效果的关键在于模板缓冲区和 z 缓冲区之间的交互作用。带有阴影量的场景是分三个阶段描绘的。首先,照常使用 z 缓冲区来描绘没有阴影的场景。然后,在模板缓冲区
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  138. 关闭 答案:
    这一效果以及其它体积模板缓冲区效果的关键在于模板缓冲区和 z 缓冲区之间的交互作用。带有阴影量的场景是分三个阶段描绘的。首先,照常使用 z 缓冲区来描绘没有阴影的场景。然后,在模板缓冲区中将阴影标出,如下所示。使用不可见的多边形绘制阴影量的正面,其中 z 测试被启用,而 z 写入被禁用,且在每有一个像素通过 z 测试时,就将模板缓冲区增加一次。以同样方式描绘阴影量的背面,但是要减少模板值。
    现在,请考虑单独一个像素的情形。假设摄像机不在阴影量中,场景中的相应点就有有四种可能性。如果从摄像机到点的光线不与阴影量相交,则不会绘制任何的阴影多边形,而模板缓冲区依旧为零。否则,如果点在阴影量的前面,则阴影多边形会被输出 z 缓冲区,而模板依旧保持不变。如果点位于阴影量下面,则会描绘同样多的正面阴影,而模板为零,即增加的次数与减少的次数一样多。
    最后一种可能性就是点位于阴影量中。在这种情况下,阴影量的背面会被输出 z 缓冲区,但正面则不然,因而模板缓冲区会为非零。结果就是,帧缓冲区位于阴影中的一些部分具有非零的模板值。最后,要实际描绘阴影,整个场景会被一个 alpha 混色的多边形集充溢一遍,其中仅模板值非零的像素受到影响。在随 DirectX SDK 一起提供的 “Shadow Volume”示例中有关于该技巧的一个示例。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  139. 47.模板缓冲区是什么?
  140. 关闭 答案:
    模板缓冲区是一个记录每个像素信息的附加的缓冲区,很象一个 z 缓冲区。实际上,该缓冲区就驻在 z 缓冲区的某些位中。常见的模板/z 缓冲区格式为 15 位的 z 和 1 位的模板,或 24 位的 z 和 8 位
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  141. 关闭 答案:
    模板缓冲区是一个记录每个像素信息的附加的缓冲区,很象一个 z 缓冲区。实际上,该缓冲区就驻在 z 缓冲区的某些位中。常见的模板/z 缓冲区格式为 15 位的 z 和 1 位的模板,或 24 位的 z 和 8 位的模板。在描绘多边形时,可以针对每个像素,对模板的内容进行简单的算术操作。例如,可以增加或减少模板缓冲区,或在模板值没能通过一项简单的比较测试时,拒绝像素。可以将帧缓冲区的一个区域标出,然后只对标出(或未标出)的区域进行描绘,上述操作对于此类效果十分有用。各种体积效果就是很好的例子,比如阴影量。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  142. 48.我如何防止透明的像素被写到 z 缓冲区?
  143. 关闭 答案:
    您可以借助高于或低于某一给定门限的 alpha 值来将像素滤除。您通过描绘状态 ALPHATESTENABLE、ALPHAREF 和 ALPHAFUNC 来控制这一操作。
  144. 关闭 答案:
    您可以借助高于或低于某一给定门限的 alpha 值来将像素滤除。您通过描绘状态 ALPHATESTENABLE、ALPHAREF 和 ALPHAFUNC 来控制这一操作。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  145. 49.Direct3D 几何代码使用 3DNow!或 Pentium III SIMD 指令吗?
  146. 关闭 答案:
    使用。Direct3D 几何流水线有多个不同的代码路径(具体取决于处理器类型),并将使用 3DNow! 或 Pentium III SIMD 指令所提供的特殊的浮点操作(如果这些指令可用的话)。其中包括定制顶点着色
    此FAQ对你有帮助吗?[ | ] | 查看全文 | 收藏 | 来源:Myprice价格网
  147. 关闭 答案:
    使用。Direct3D 几何流水线有多个不同的代码路径(具体取决于处理器类型),并将使用 3DNow! 或 Pentium III SIMD 指令所提供的特殊的浮点操作(如果这些指令可用的话)。其中包括定制顶点着色器的处理。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
  148. 50.Direct3D 包含有软件光栅器吗?
  149. 关闭 答案:
    没有。Direct3D 现在支持插件式软件光栅器。但是,目前并不默认提供任何软件光栅器。
  150. 关闭 答案:
    没有。Direct3D 现在支持插件式软件光栅器。但是,目前并不默认提供任何软件光栅器。
    此FAQ对你有帮助吗?[ | ] | 收藏 | 来源:Myprice价格网
63行 当前 1/2 首页 12 尾页

查看Microsoft/微软开发软件产品的在线问题Microsoft Visual Studio.Net(专业版)产品的在线问题

主题 作者 浏览数 最后回复时间
暂时没有人寻求Microsoft Visual Studio.Net(专业版)的技术支持
0行 当前 1/0 首页 尾页

我要提问:(发布Microsoft Visual Studio.Net(专业版)开发软件的问题)

用户名:
* 为方便您及时获得最新答案,请先注册为MyPrice网友再发布您的问题。
   如果您已经注册,请直接在上面填写用户名和密码
* 您的问题:
* 问题补充:
* 验 证 码:
如有回复自动转发给我(登录用户此项有效)
将问题发送给厂家

Microsoft Visual Studio.Net(专业版) 驱动下载

Microsoft Visual Studio.Net(专业版)暂时未有驱动提供

Microsoft Visual Studio.Net(专业版) 说明书下载

Microsoft Visual Studio.Net(专业版)暂时未有说明书提供

上传说明书,获得Myprice积分奖励!

厂商信息

  • 厂家名称:微软(中国)有限公司
  • 联系电话:010-58968888
  • 服务热线:800-820-3800
  • 技术支持:800-820-3800
  • 网页地址:CN.北京.北京.朝阳区霄云路38号盛世大厦19层
  • 传真:010-59258588
  • Email:给微软(中国)有限公司发送Email
  • 邮政编码:100027
  • 详细地址:CN.北京.北京.朝阳区霄云路38号盛世大厦19层
微软(中国)有限公司

价格检索开发软件

开发软件月关注排行