问题标签 [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 回答
1740 浏览

.net - 在 Windows 窗体中的图像上绘制覆盖的最快方法

在.net中绘制图像的最快方法是什么?

我正在尝试在具有 Windows 窗体控件的另一个图像之上绘制一个图像。我知道当我尝试使用循环直接绘制它时,它需要一个 Eon。

我听说过的选项是 GDI+、Direct Draw 或 DX10。我从一个固定大小的位图开始,然后在将其分配给表单对象之前对其应用 3 个以上的叠加层、图层。

谢谢,

0 投票
2 回答
7985 浏览

directx - 所有不同的 HLSL 采样器类型有什么用途?

我目前正在使用 DX9/SM3,关于HLSL 采样器的 MSDN 文档似乎非常缺乏解释如何使用不同的采样器类型。更糟糕的是,他们试图在一篇文章中涵盖 DX9 和 DX10,所以他们将所有关键词混在一起:

采样器名称= SamplerType { Texture = < texture_variable >; [ state_name = state_value ;] ... };

...

采样器类型

[在] 采样器类型,它是以下之一:samplersampler1Dsampler2Dsampler3DsamplerCUBEsampler_stateSamplerState

Direct3D 9 和 Direct3D 10 之间的区别:

Direct3D 10 支持一种额外的采样器类型:SamplerComparisonState

我觉得与这篇文章相反,SamplerState只有 DX10。我看到的几乎所有代码都sampler_state用于SamplerType。BasicHLSL (DX9) 中的一个简单示例:

为什么所有不同的 _SamplerType_s 都存在,你什么时候使用,比如说,sampler或者sampler2D代替sampler_state?无论如何,您在获取时都需要明确,例如tex2D, texCUBE,那么这里发生了什么?

0 投票
3 回答
1054 浏览

c++ - 结合 Direct3D、Axis 制作多个 IP 摄像机 GUI

现在,我想做的是制作一个新的 GUI,本质上是一个使用 directX(更准确地说,direct3D)的软件,它显示来自 Axis IP 摄像机的流式图像。

目前我认为整个程序的流程是这样的: 1. 获取 Axis 程序以获取流式图像 2. 将图像传递给 Direct3D 程序。3. 在屏幕上显示程序。

目前我已经制作了一个基本的 Direct3D 应用程序,它可以加载和显示来自 avi 视频的视频帧(用于测试)。我不知道如何使用 DirectX 直接从视频中加载图像,所以我使用 OpenCV 从视频中保存帧并让 DX 上传它们。非常慢。

现在我有一些不清楚的事情:1.如何获得一个在 C++ 中工作的 Axis 程序(稍后会查找示例,没什么大不了的) 2.如何直接从 Axis IP 摄像头程序上传图像。

所以,伙计们,你们对如何让我的程序更有效地工作有什么建议或建议吗?有什么事就告诉我。

0 投票
6 回答
6462 浏览

directx - 在 DirectX 中调整场景的亮度/对比度/伽玛?

在一个充满来自 D3DX 的 Sprite 对象的 Direct3D 应用程序中,我希望能够全局调整亮度和对比度。如果可能的话,对比很重要。

我在这里看到了这个关于 OpenGL 的问题: Tweak the brightness/gamma of the whole scene in OpenGL

但这并没有给我在 DirectX 上下文中需要的东西。我知道这也是我可以用像素着色器做的事情,但这似乎就像用火箭筒射击苍蝇一样,我担心与旧 GPU 的向后兼容性,这些 GPU 必须在软件中执行任何着色器。看起来这应该是可能的,我记得在着色器时代之前,甚至像原来的半条命这样的更老的游戏也有这样的设置。

编辑:另外,请注意,这不是一个全屏应用程序,所以这需要只是影响一个 Direct3D 设备,而不是整体显示器的全局设置。

0 投票
4 回答
4315 浏览

c++ - 如何使用 D3DPT_TRIANGLESTRIP 原始类型在 DirectX 中绘制两个分离的矩形

我是 DirectX 的新手,我正在尝试在一个场景中使用D3DPT_TRIANGLESTRIP. 一个矩形没问题,但两个矩形是完全不同的球类游戏。D3DPT_TRIANGLELIST是的,我可以使用原始类型绘制的四个三角形来绘制它们。我的好奇心在于使用D3DPT_TRIANGLESTRIP. 我用于一个 Rectangle 的部分代码D3DPT_TRIANGLESTRIP如下:

更重要的代码...

然后像这样渲染...

基于这个模型,我可以轻松地复制代码更改自定义顶点上的 x 和 y 值并创建另一个顶点缓冲区,它会工作。

就我个人而言,我觉得这不是最好的方法,特别是考虑到我必须绘制 100 个矩形或类似的东西的情况。问题是,我没有其他想法。所以我的问题是,用 绘制两个矩形的最有效方法是什么D3DPT_TRIANGLESTRIP?还有一种复制和转换当前矩形的可能方法吗?

0 投票
2 回答
1292 浏览

directx - 使用 Direct3D 进行最基本的转换顶点绘图

我对 DirectX 完全陌生,我想用最基本的 Direct3D 配置(用于学习目的)绘制一些未转换的图元。我已经绘制了一些带有变换顶点的图元,即设置了 D3DFVF_XYZRHW 标志的顶点。

现在我试图用未转换的顶点获得相同的输出,但我没有在屏幕上看到任何视觉效果。我更改了 FVF 并调整了顶点,但尚未设置任何转换矩阵(世界、视图、投影)。是否有必要设置任何这些矩阵?我假设当没有设置矩阵时,一切都会像转换顶点一样工作,但显然情况并非如此。

默认情况下,哪个区域(在世界坐标中)是可见的?为了使它工作,我必须做什么?

这基本上就是我所做的:

提前致谢!

编辑:现在我明白了,照明已启用,愚蠢的初学者的错误。还是要谢谢你的帮助!

0 投票
1 回答
250 浏览

text - 为什么在使用 D3DXFont::DrawText 时重复的文本被渲染到不同纹理的 Z 缓冲区?

我已经为此绊倒了一段时间,想知道是否有人以前遇到过这个问题。

我正在处理的应用程序分为多个数据图和屏幕底部的单个时间线。每个绘图(实际上是多个相互叠加的纹理)以及时间线都被渲染为单独的纹理。首先渲染时间线纹理,然后是从屏幕顶部到底部的每个绘图纹理。我正在使用 DXUT 和 DirectX9(2009 年 3 月)。

将时间文本添加到时间线纹理后,我注意到文本在每个数据图的标题栏中重复出现。这是显示部分的屏幕截图,它只显示一个图,但文本在每个打开的图上重复:

替代文字

似乎它直接与在时间轴的渲染函数中调用的 DrawText 相关联。我确实使用相对坐标作为传递给 DrawText 的矩形,但由于我已经将渲染目标设置为所需的纹理,它应该只影响当前纹理。不是之后渲染的每个纹理。

有没有人在使用 D3DXFont 时遇到过类似的问题?

编辑:经过更多实验,看起来它与 Z 缓冲区有关。通过将 D3DCLEAR_ZBUFFER 添加到每个纹理表面上的清除,重复的文本就消失了。虽然这个问题现在似乎被绕过了,但我仍然很好奇为什么在我的 DrawText 调用期间要写入一个完全独立的纹理的 Z 缓冲区。

0 投票
4 回答
1543 浏览

wpf - WPF 是否依赖 Direct3D 调用,即使是标准控件?

作为这个这个其他问题的后续行动,我现在试图了解(出于好奇)WPF 是否完全/主要依赖于 Direct3D 调用(而不是 2D DirectDraw 调用),即使是标准控件,例如按钮甚至容器窗口本身。

维基百科指出:

所有图形,包括窗口等桌面项目,均基于 Direct3D

这是真的?有人可以扩展并提供有关该主题的更多资源吗?

任何帮助表示赞赏!

0 投票
1 回答
229 浏览

direct3d - 未登录时初始化 Direct3d - 或 - 自动化 Windows 登录

我需要自动化构建过程,该过程利用初始化 Direct3d 作为其初始化的一部分的应用程序 - 即使它从不需要创建窗口。

我正在尝试使用 Windows 任务计划程序(在 XP 上)自动执行此任务,并且我已将任务计划程序服务配置为允许与桌面交互。

我遇到的问题是,当用户未完全登录时,或者如果任务在用户登录但计算机被锁定时启动,则相关应用程序将失败并显示 Direct3d 初始化失败的消息。

谁能想到解决这个问题的方法?我是否缺少某些配置选项(在 Windows、任务调度程序或 DirectX 中)?在启动此应用程序之前我可以做些什么来强制 Direct3d 初始化?有没有办法编写 Windows 登录脚本,以便用户可以在启动应用程序之前登录(或计算机解锁)?

最终,我可以让用户一直处于登录状态,并且计算机处于解锁状态,但显然这不是一个理想的解决方案。

感谢您的任何想法!

0 投票
2 回答
162 浏览

3d - 3D建模问题 - 重新审视

这是我之前发布的问题的后续,希望这次有更好的描述。

我做了一副眼镜,上面附有一个针孔摄像头,可以记录人的眼球运动。相机位于眼睛下方,因此向上看眼睛。围绕 Y 轴(即相机有轻微的向左或向右倾斜)和 Z 轴(即相机顺时针或逆时针略微扭曲)也有轻微的旋转。

从视频中,我提取了图像中的一组点,它们应该看起来大致是线性的,但不是因为相机的方向不是直视人的眼睛。

如果我知道描述相机方向的单位向量 U 以及相机正在观看的图像点 IP1(x,y),如果相机位于 (0),我如何计算这些图像点的坐标, 0, -z)?