问题标签 [direct3d]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
708 浏览

directx - Direct3D 相机纵横比/缩放问题

我正在使用 SlimDX/C# 编写 Direct3D 应用程序。我按照文本框的方式配置了相机:

Matrix.RotationYawPitchRoll画法和旋转法都不错mesh.DrawSubset(0)。其他一切看起来都很正常。

我的问题是我的 3d 网格(薄方形框),当从侧面看并垂直站立时,它看起来比水平时更厚。我试图将其更改AspectRatio为 1,情况更糟。所以通过反复试验,我发现它AspectRatio在 2.6 左右时看起来很正常。为什么会这样,可能有什么问题?

0 投票
1 回答
216 浏览

directx - MaxTextureRepeat 限制在什么时候发挥作用?

在 Direct3D 下执行像素着色器时,MaxTextureRepeat 对纹理坐标施加的限制是否仅在调用纹理查找函数(如 Tex2D())期间成为问题,或者它们是否会在着色器中访问纹理坐标时发挥作用?

我想知道是否可以通过在纹理坐标上调用 frac() 之类的东西来避免 MaxTextureRepeat 限制,然后再将它们传递给纹理查找函数。

0 投票
1 回答
1929 浏览

browser - 全屏 Direct3D 应用程序中的 Web 浏览器

我需要在全屏 Direct3D 应用程序中有一个正常工作的 Web 浏览器。例如,当您加入服务器时,Valve 的基于 Source 的游戏(有点)在 MotD 窗口中执行此操作。关于在哪里看的任何提示?

0 投票
3 回答
1158 浏览

wpf - 渲染到屏幕外表面时可以使用像素着色器吗?

我正在考虑通过新的 D3DImage 将我拥有的一些 D3D 代码与 WPF 集成,如下所述

我的问题是:像素着色器在屏幕外表面上工作吗?

0 投票
1 回答
328 浏览

direct3d - 顶点和丢失的设备

在 Direct3D 应用程序(托管)中,是否应该在每次丢失设备时重新创建顶点缓冲区?

我正在开发的应用程序是一个 windows CAD 应用程序。不是游戏。我想我可以在我的 3D 模型更改时生成顶点缓冲区。但是当我丢失我的设备时我应该重做还是可以重用旧设备的顶点缓冲区?

0 投票
5 回答
2196 浏览

direct3d - 就 3D 图形而言,“多边形”是什么意思?

一本旧的 Direct3D 书说

“......您可以通过硬件加速实现可接受的帧速率,同时每​​帧显示 2000 到 4000 个多边形......”

Direct3D 中的一个多边形是什么?它们是指一个基元(索引或其他)还是一个三角形?

0 投票
4 回答
294 浏览

graphics - Modelling an I-Section in a 3D Graphics Library

I am using Direct3D to display a number of I-sections used in steel construction. There could be hundreds of instances of these I-sections all over my scene.

I could do this two ways:

I-Sections

Using method A, I have fewer surfaces. However, with backface culling turned on, the surfaces will be visible from only one side. If backface culling is turned off, then the flanges (horizontal plates) and web (vertical plate) may be rendered in the wrong order.

Method B seems correct (and I could keep backface culling turned on), but in my model the thickness of plates in the I-section is of no importance and I would like to avoid having to create a separate triangle strip for each side of the plates.

Is there a better solution? Is there a way to switch off backface culling for only certain calls of DrawIndexedPrimitives? I would also like a platform-neutral answer to this, if there is one.

0 投票
2 回答
869 浏览

c++ - 保存 Direct3D 设备的状态

状态应至少包括以下内容:

  • 通过 SetStreamResource() 设置的所有设置
  • 指数

我有一个类,它的 Draw() 函数将调用 SetStreamResource、设置索引并最终调用 DrawIndexedPrimitive()。我想在 Draw() 返回之前恢复设备状态。

我正在寻找与 GDI 的 SaveDC()/RestoreDC() 类似的东西。

0 投票
3 回答
2333 浏览

3d - XNA 中窗口系统的渲染策略(RenderTarget 性能)

我目前正在从头开始为 XNA 游戏创建一个窗口系统。我主要为 Windows 开发,但谁知道我将来可能支持哪些平台。如果您知道本机 Direct3D 的这一点,请随时回答,因为性能语义应该相似。如果可能,请考虑如果目标平台是 X-Box 360 会发生什么变化。

我取得了不错的进展,但现在我不确定如何准确地渲染窗口。我想出了四种方法:

  • 只需将所有控件直接渲染到屏幕上。这就是我现在所做的。只要控件不是半透明的,就可以通过在状态之间混合来为控件设置动画。我没有找到在任意数量的状态之间制作动画的好方法(假设一个按钮当前正在从按钮向上到按钮向下以及从鼠标悬停到鼠标悬停动画,然后它被禁用。它应该从最后一个状态平滑地混合到新状态。使用这种方法,这仅在最后一个动画完成后播放一个动画时才有效,否则您将在动画中跳跃。

  • 将每个顶级窗口和所有控件渲染到一个渲染目标中,然后使用它以半透明的方式将顶级窗口渲染到屏幕上。这使得顶层工作具有半透明性并且易于管理,但不会改变动画的内容。

  • 将每个控件渲染到渲染目标中,该目标仅在控件变脏时更新(即必须设置动画或文本已更改)。这样,每个控件的半透明将起作用。

  • 和前面一样,但除了解决动画问题之外,每个控件都有第二个渲染目标。每当动画开始时,交换渲染目标,这样我们就有了动画开始时的状态,并将其与目标状态混合到另一个渲染目标中。这不应该比以前的方法增加开销,我们只是有两倍多的渲染目标,在任何给定的帧中,只有一个会被渲染(最多)。但是问题来了:为了让它工作,我需要让“旧”渲染目标保留它的内容。这应该在 Windows 上具有良好的性能,但似乎对 X-Box 360 有严重的性能影响。另一方面,“保留”位仅在动画处于活动状态时才是必需的。

真正的问题来了。欢迎任何澄清的事情。关于性能问题,请记住,这只是游戏的窗口系统——后面的游戏可能会使用许多渲染目标并吸收性能,而且可能比窗口系统更多。假设在绝对最坏的情况下,我们可能有五个顶级窗口,每个屏幕上有 20-40 个控件。

  • 如果有的话,您会推荐这些方法中的哪一种,为什么?当然,随意添加另一种方法。
  • 假设只有 200 个或 400 个渲染目标可用,假设每个帧只有 20 个渲染目标,是否会对性能产生影响?
  • PreserveContents 对 X-Box 360 的性能影响真的那么糟糕吗?在 Windows 上有多糟糕?
  • 可以写入 RenderTarget2D.RenderTargetUsage 属性。在运行时切换它是一个好主意,仅在需要时启用 PreserveContents 吗?
  • 您(作为玩家)是否介意控制动画在某些情况下会跳转,例如将鼠标悬停在按钮上,将鼠标移出然后再次移入,因此“正常->悬停”动画从头开始播放两次,因为它是比你慢?
0 投票
2 回答
992 浏览

mfc - Direct3D MDI 项目:MFC 还是 .NET?

我正在研究一个新项目,其中 Native 和 Managed 方法听起来都是个好主意。这是一个应支持 MDI 接口的 Windows 桌面应用程序。客户区将广泛使用 Direct3D。该项目的开发人员同样精通 C#、C++/CLI 和 MFC。

MFC 优势:

  • 文档/视图架构
  • 大多数 Direct3D 在线资源仍然使用 C++

托管代码优势:

  • .NET 框架
  • C#

我还能在上面的列表中添加什么?不要烧这个。两个清单。只需添加它们即可。

注意:我有很好的理由(与 IDE 和调试有关)不使用混合模式。所以算了。