问题标签 [directx]

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 投票
3 回答
232 浏览

c++ - 奇怪的顶点着色器/像素着色器故障

我的水效果有点问题

正如你在这里看到的,它没有以正确的方式显示。另一个应用了不同纹理的屏幕显示了转换中的错误,更清楚地显示了我的 HLSL 代码:

反射贴图在渲染目标上渲染,同时沿水高翻转眼睛的 y 值。(并且向上向量 0,-1,0)

所以,我的问题是:这可能是什么原因?

0 投票
2 回答
1011 浏览

wpf - 通过directx或其他方法在WPF应用程序中实时1394火线视频

是否有任何人都知道我可以用来将火线视频流式传输到 WPF 应用程序的控件。我不需要相机控制或仅捕获视频。我需要 WPF 托管,因为我将在顶部添加 WPF 内容。

我希望通过在 WPF 中添加直接 X 表面,可能会出现这样的情况。

理想情况下寻找相对较高水平的东西(根本不是直接的表演者)。

谢谢,布赖恩

0 投票
2 回答
5190 浏览

c# - Direct3D 中的高效线条绘制(Transformation2D?)

背景:我正在使用 DirectX 的 SlimDX C# 包装器,并且正在使用 Sprite 类(传统上来自底层 dll 中的 Direct3DX 扩展)绘制许多 2D 精灵。我一次在屏幕上绘制了数百个精灵,性能非常棒——在我的四核上,它在我的整个游戏中使用了大约 3-6% 的处理器,包括 10,000 多个对象的逻辑,ai第二个线程上的例程等。所以很明显,精灵正在使用全硬件加速进行绘制,一切都应该是这样。

问题:当我开始引入对 Line 类的调用时,问题就出现了。一旦我画了 4 条线(用于拖动选择框),处理器使用率就会飙升至 13-19%。这只有四行!

我尝试过的事情:

  1. 关闭和打开线抗锯齿。
  2. 关闭和打开 GLLines。
  3. 围绕我的绘图调用手动调用 line.begin 和 line.end。
  4. 省略对 line.begin 和 line.end 的所有调用。
  5. 确保我对 line.draw 的调用不在 sprite.begin / sprite.end 块内。
  6. 在 sprite.begin / sprite.end 块内调用 line.draw。
  7. 渲染 4 行,或渲染 300。
  8. 关闭所有精灵和文本渲染,只保留 4 行的线渲染(看看这是否是某种模式更改问题)。
  9. 以上的大多数组合。

一般来说,这些都不会对性能产生重大影响。#3 将处理器使用率降低了大约 2%,但即便如此,它仍然比应有的水平高出 8% 或更多。最奇怪的是,上面的#7 对性能的影响绝对为零——4 行和 300 行一样慢。我唯一能想到的是,由于某种原因,这是在软件中运行的,和/或它导致图形卡在某种绘图模式之间不断来回切换。

矩阵法:

如果有人知道上述问题的任何解决方法,那么我很想听听!

但是我假设这可能只是directx内部的一个问题,所以我一直在追求另一条路线——制作我自己的基于精灵的线。本质上,我有一个 1px 的白色图像,我使用漫反射颜色和变换来绘制线条。这在性能方面很有效——画出 300 条这样的“线”使我处于我在四核上寻找的 3-6% 的处理器利用率性能范围内。

我的像素拉伸线技术有两个问题,我希望对变换更了解的人可以帮助我。这是我当前的水平线代码:

这是可行的,因为它在屏幕上大部分正确的位置绘制了大部分正确大小的线条。然而,事情似乎向右移动,这很奇怪。我不太确定我的矩阵方法是否正确:我只想将 1x1 精灵水平缩放一些像素,垂直缩放不同的像素。然后我需要能够定位它们——在中心点很好,我认为这就是我必须做的,但如果我能把它定位在左上角那就更好了。这似乎是一个简单的问题,但我对矩阵的了解很薄弱。

这将使纯水平线和纯垂直线对我有用,这是战斗的大部分内容。我可以忍受这一点,并在我目前使用斜线的位置使用其他类型的图形。但是,如果我有一种方法可以使用这种拉伸像素方法绘制有角度的线条,那就太好了。换句话说,例如,从 1,1 到 7,19 画一条线。使用矩阵旋转等,这似乎是可行的,但除了猜测和检查之外,我什至不知道从哪里开始,这将花费很长时间。

非常感谢任何和所有帮助!

0 投票
0 回答
2891 浏览

directx - How to copy the pixel data from a texture into a bitmap (direct3d)?

I have rendered the scene into a texture, and then I want to save it into a bitmap, but after lock the texture, I found there is no pixel data in the lock area. The texture can be displayed correctly on the screen. I am not sure why? 1> the format is incorrect? A8R8G8B8 has been used. 2> have I missed some important steps before get the pixel data?

0 投票
3 回答
6264 浏览

c# - C# 从 wmv 文件中抓取框架

有谁知道是否可以使用 C# 从位置 X 上的视频 (.wmv) 中获取帧/图像,而无需安装 DirectX 并在 Windows 2008 上工作(我希望尽可能少安装的网络服务器)。

甚至使用 directx 的简单解决方案也可以。

亨克

0 投票
1 回答
2358 浏览

windows - 在 windows / direct3d 中使用 ttf 文件中的字体

我正在使用 direct3d 9 并使用 D3DXCreateFont 创建可用于将文本写入屏幕的字体对象。但是我想使用我在 TTF 文件中的字体而不是安装的字体。有什么方法可以从 TTF 文件创建字体对象,而无需先将字体安装到我不想做的窗口中?

0 投票
1 回答
3421 浏览

c++ - DXGetErrorString 新手问题

我是 C++ 和 Direct X 的新手,我想知道 DXGetErrorString 和 DXGetErrorDescription 的正确用法是什么?

根据http://msdn.microsoft.com/en-us/library/bb173057(VS.85).aspxhttp://msdn.microsoft.com/en-us/library/bb173056(VS.85)。 aspx,这些函数返回一个指向字符串的指针。但是,在我在网络上看到的所有示例中,它们直接使用返回值而没有在之后释放它。

例如:

这是否意味着存在内存泄漏,因为为错误字符串分配的内存和错误描述从未释放?如果没有,它是如何发布的?

感谢您的帮助 !

0 投票
2 回答
6771 浏览

c# - 64 位窗口上的 DirectX 应用程序

我正在开发一个 WPF 应用程序,其中 3D 部分由 DirectX 9 处理(很多 3d 使用 WPF 运行速度不够快)。

问题是应用程序以“任何 CPU”作为配置发布,当用户在 64 位窗口上运行它时,direcX 部分崩溃(System.BadImageFormatException)。显然,directX 部分包含的 dll 在 64 位窗口上不可用。

这发生在我们在应用程序中使用的其他一些 3:rd 部分 dll 中,但是如果用户在 64 位 Windows 机器上运行,我们通过将运行时中的 dll 更改为为 x64 构建的 dll 解决了这个问题。你们有谁知道我在哪里可以找到 x64 的 DirectX 9 dll 吗?如果它们存在的话。

我需要的是:

  • Microsoft.DirectX.Direct3D
  • Microsoft.DirectX.Direct3DX
  • 微软.DirectX

如果它们不存在,是否可以通过其他方式解决问题?我无法将配置更改为 x86,因为应用程序是通过 ClickOnce 发布的,并且配置更改使 ClickOnce 停止工作(配置包含在 ClickOnce 键中)


让我补充一点,我正在使用由 WPF 应用程序托管的 Winforms 部分,并且 winforms 部分正在使用我所询问的 DirectX dll。与使用 WPF:s 3D 相比,这是一种在 WPF 中呈现大量 3D 网格的更好更快的方法。不幸的是,这个问题反而发生了。

0 投票
4 回答
1403 浏览

c++ - Direct3D 和 iPhone 加速度计矩阵

我正在使用 WinSock 连接来获取加速度计信息和 iPhone 并进入 Direct3D 应用程序。我已经修改了 Apples GLGravity 的示例代码,让我的直升机相对于重力移动,但是我需要“限制”移动,这样直升机就不能倒飞!我试图像这样限制加速度计的输出

除了这似乎不起作用!?我唯一能想到的是我需要修改自定义矩阵,但我似乎无法理解我需要更改的内容。矩阵代码如下。

如果有人可以提供帮助,将不胜感激!

0 投票
4 回答
26255 浏览

input - 如何从 Xbox 360 控制器获取输入?

我正在编写一个需要从 Xbox 360 控制器获取输入的程序。然后输入将被无线发送到我正在建造的 RC 直升机。

到目前为止,我了解到这可以使用 DirectX 中的 XInput 库或 XNA 中的输入框架来完成。

我想知道是否还有其他可用的选项。我的程序的范围相当小,而且必须安装像 DirectX 或 XNA 这样的大型游戏库似乎有些过分。此外,我希望该程序是跨平台的,而不是特定于 Microsoft 的。

有没有一种简单的轻量级方法可以用 Python 之类的东西来获取控制器输入?

编辑以回答一些评论:

直升机总共有 6 个螺旋桨,排列成 3 个同轴对。基本上,它将与非常相似,只是它的成本约为 1,000 美元,而不是 15,000 美元。它将使用 Arduino 进行板载处理,使用 Zigbee 进行无线控制。

选择360控制器是因为它设计得很好。它非常符合人体工程学,并具有所需的所有控制输入。对于那些熟悉直升机控制的人来说,左操纵杆将控制集体,右操纵杆控制俯仰和滚动,模拟触发器将控制偏航。模拟触发器是 360 控制器的一大特色。PS和大多数其他人都没有。

我有一个该项目的网页,但它仍然很稀疏。我确实计划记录整个设计,所以最终它会很有趣。
http://tricopter.googlecode.com
顺便说一句,为 googlecode 项目提供博客功能会扼杀谷歌吗?

如果可能的话,我希望 360 控制器输入程序能够在 Linux 和 Windows 中运行。不过最终,我想将控制器直接连接到嵌入式微控制器板(如 Arduino),这样我就不必通过计算机,但目前它不是一个高优先级。