问题标签 [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 投票
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 投票
2 回答
918 浏览

c++ - Direct3D10:没有 32 位 ARGB 格式?

我开始添加 d3d10 支持以配合我现有的 d3d9 图形后端。

问题是所有现有代码(在几个应用程序中......)都使用 ARGB 格式的颜色,但是我找不到与 d3d10 匹配的格式模式。d3d10 根本不支持 ARGB 颜色格式还是我错过了什么?如果我没有错过什么是在它们之间进行转换的好方法,它只需要将第一个字节移到末尾,这似乎是一个非常简单的概念,但是除了将颜色分解成它的组件之外,我无论如何都看不到这样做并重建它......例如:

0 投票
1 回答
2358 浏览

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

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

0 投票
1 回答
977 浏览

winapi - 如何使用 Direct3D9 确定哪些显示器连接到同一物理设备?

使用 Direct3D9,我可以使用IDirect3D9::GetAdapterCount(). 但是,这会返回输出的数量,即单个双头显卡的 2 个。使用 Win32 API,我可以使用以下代码段枚举显示设备和连接的监视器:

我的问题是:在 D3D 中是否有一个等价物,如果我之后使用创建 D3D 设备也可以正常工作D3DCREATE_ADAPTERGROUP_DEVICE?如果不是,我是否可以对设备的枚举顺序做出任何假设,以将 Win32 API 结果与 D3D 适配器匹配?换句话说:Direct3D 适配器 0 是否保证是返回的第一个适配器EnumDisplayDevices

补充:我刚刚发现,我可以将设备名称匹配D3DADAPTER_IDENTIFIER9到Win32的设备名称。但是,有没有办法首先从 D3D 获取物理设备?

0 投票
3 回答
601 浏览

windows - 更改分辨率时如何保留其他应用程序窗口的大小和位置?(例如,以非桌面分辨率来回全屏游戏)

当他们在 Windows 中全屏显示时,有没有人注意到使用 D3D 或 OpenGL 的应用程序的这种奇怪行为?它仅适用于应用程序进入全屏然后切换回窗口或终止时。他们要么洗牌其他应用程序的窗口位置(当我在单显示器机器上),或者当我在多显示器机器上时将所有其他应用程序窗口移动到另一个屏幕。

如果没有没有显示这两个异常的应用程序,我会认为这是理所当然的。那么,我的问题是,在编写应用程序以缓解这两个问题时,究竟需要注意什么?另外,我不确定这个问题是否存在于 Windows 以外的其他平台上?

我对此的主要设置是 OpenGL/C++,但我认为这适用于您拥有的任何设置,因为它似乎是需要处理的平台 API。


编辑:好的,这是对我的观察的更多说明。即使在与桌面相同的分辨率下,问题仍然存在。因此,它似乎与分辨率切换无关,因为我见过应用程序/游戏,即使它们与桌面的分辨率不同,当它们切换回来时,桌面上的窗口也会恢复到以前的状态全屏应用程序已运行。


edit2:看起来这是一个分辨率开关问题,Windows(至少是 XP)似乎不记得应用程序窗口的位置和大小(在多显示器设置的情况下)。看起来唯一的解决方案是我在对问题的回答中提供的解决方案——即使它看起来像是操作系统应该提供的东西,至少作为一个或两个 API 调用。我仍然不相信这是唯一的解决方案,一定有一种简单的方法可以优雅、轻松地恢复,不是吗?

0 投票
4 回答
1403 浏览

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

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

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

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

0 投票
1 回答
3784 浏览

c++ - 如何设置 Direct3D 纹理中单个像素的颜色?

我正在尝试在 Direct3D 中将 2D 图像绘制到屏幕上,我假设必须通过将纹理映射到投影以填充屏幕的矩形广告牌多边形来完成。(我不感兴趣或不能使用 Direct2D。)我在 SDK 中找到的所有纹理信息都描述了从文件加载位图并分配纹理以使用该位图,但我还没有找到一种操作方法逐像素位图的纹理。

我真正想要的是一个功能,例如

void TextureBitmap::SetBitmapPixel(int x, int y, DWORD color);

如果我不能直接在纹理对象中设置像素,我是否需要保留一个作为位图的 DWORD 数组,然后将纹理分配给每一帧?

最后,虽然我最初假设我将在 CPU 上执行此操作,但每个像素的颜色计算也可能在 GPU 上完成。是设置纹理中单个像素颜色的 HLSL 代码,还是像素着色器仅对修改显示像素有用?

谢谢。

0 投票
2 回答
886 浏览

com - Direct3D 10 是否有 COM 曝光

先生们,尊敬的女士们。

我在 Code Project 的 COM 论坛上发布了这个问题,并得到了一个流利的回复,所以希望你会更有帮助。

我看到微软有一个用于 Direct3D 9 的 COM 库,其 GUID 为 81BDCBCA-64D4-426d-AE8D-AD0147F4275C。

Microsoft 是否在 COM 上公开了 Direct3D 10,如果是,接口 GUID 是什么?

提前致谢。

0 投票
2 回答
8184 浏览

c# - 使用 SlimDX 绘制 2D

您好,我无法使用 SlimDX 正确渲染精灵。它像 .NET 绘图 DrawImageUnscaled 一样绘制了一些缩放。我没有使用任何转换。

在里面:

渲染:

编辑:如果您不知道如何想象错误的渲染,这里是我渲染和参考的内容(忽略那个白色,它只是透明的 PNG)。注意第一张图像是如何 缩放

0 投票
2 回答
1118 浏览

direct3d - Direct3D 10 和着色器管理

我正在使用 DirectX 10 编写 3d 应用程序,我想知道 Shadermanagement 的处理方式如何。

在应用程序启动时预加载所有着色器然后根据需要使用它们是否最有效,或者如果数量增加,这是否训练硬件资源?

另外我想知道通过着色器排序渲染是否是速度考虑因素,以便最小化着色器开关。