问题标签 [directx-9]
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.
graphics - GetFrontBufferData 到显存而不是系统内存
使用 DirectX 9,我想捕捉屏幕上的内容并在我的程序中显示它的较小版本。
为了捕捉它,我发现并正在使用 GetFrontBufferData。然而,它的工作方式是写入系统内存 (D3DPOOL_SYSTEMMEM) 中定义的表面。这导致我必须将屏幕截图传输回视频内存,然后才能绘制它。
正如您可以想象的那样,从(视频内存-> 系统内存-> 视频内存)进行的这种不必要的传输会导致我的程序出现相当大的快门。
有没有办法可以将图像存储在前端缓冲区中并将其放在视频内存的表面上?
这个问题是我最近的问题的衍生:Capture and Draw a ScreenShot using DirectX
c++ - 为什么 D3DXCreateCylinder 制作的网格着色/材质不起作用?
这个问题是“为什么 D3DXCreateCylinder 没有创建圆柱体? ”的延续。我可以绘制圆柱体,但它只是将其绘制为.
代码如下
或下载项目。我在这里吸引了我的代码“项目代码”我想绘制它具有 3D 阴影,如果默认渲染,通常任何 3D 网格都有。我不太了解材料。还是显卡的问题(我只是想:D)。
另外我在哪里可以得到信息和样品 abtSetRenderState
c - 当我调用 IDirect3DDevice9::Reset 时会发送什么消息
MSDN 文档 (http://msdn.microsoft.com/en-us/library/bb174425%28v=vs.85%29.aspx) 说“Direct3D 9 应用程序可以期望在此调用期间向它们发送消息。 " 应用程序究竟应该将哪些消息发送到它的 WndProc 函数?
c++ - 将纹理应用于索引图元。C++ DX9
我有一个基本程序,可以从 48 个四面体中画出一个立方体。更准确地说,它使用 27 个顶点和一个索引缓冲区来绘制这些四面体。我想将纹理应用于所有四面体,但我发现的所有关于纹理的教程都没有使用索引渲染,而且我程序中的每个顶点都用于其他 16 个四面体,所以我什至不知道如何定位纹理。该程序本身太长太乱,我无法发布它,但如果有人能告诉我是否可以将纹理放在索引图元上,并给我一个教程链接,我将不胜感激。
编辑:代码 ici:
好的,这就是顶点和索引的声明,只是为了给你一个想法。它非常混乱,所以很抱歉,如果您看不到它的作用,那就是声明一组螺旋状的顶点,然后声明四面体的所有索引。然后它使用 from 函数中的 int 数组仅绘制指定的四面体。
是的,我正在使用 3D 照明,尽管我没有最清楚的原因。
winapi - DirectX 纹理变形
我正在编写一个 WIN32 DirectX 9 程序,在该程序中我加载了一些纹理(一个人和一个背景)并将它们显示在屏幕上。但是,它们会变形(拉伸),而不是一对一地表示我在 Paint 中绘制的内容。我尝试了不同的窗口大小和不同的屏幕分辨率,但还是不行。
我可以通过在绘制精灵之前调用 D3DXMatrixTransformation2D 来强制非常接近地模仿原始事物。但是,这并不能解决问题。我的程序依赖于我确切地知道人在与背景相关的位置(实际上,背景移动并且人停留在屏幕中间)。
有什么简单的我遗漏了,还是因为某种原因我无法做到这一点?如果它不仅仅是一个简单的修复,我可以提供代码,但我希望不会。作为记录,我没有收到任何错误或警告;这只是一个视觉和运动跟踪问题。谢谢你。
编辑:这是一些代码:
wpf - 前端缓冲区丢失后的 HRESULT 0x8876086a
我正在使用 DirectX 在非托管代码中渲染图像,并在 WPF 中使用 D3DImage 来托管表面。当系统进入睡眠状态时,会引发 frontBufferLost 事件。处理事件并销毁并重新创建所有资源。
在非托管代码中使用 Direct3D9 时,一切正常。引发事件后,将重新创建设备并执行渲染而不会出现任何错误。
但是当我在引擎中使用 DirectX10 时,由于我还需要 Direct3D9 设备来实现 Surface 队列,所以我尝试删除并重新创建 10 和 9 设备。在这个阶段,在 GetDeviceCaps 调用期间,我总是得到 0x8876086a,我认为这是设备不可用。
有人可以帮我解决这个问题吗?
c++ - Direct3D 9 阴影映射混合模式
我目前正在尝试在 direct3d 9 中的场景上绘制阴影。我正在尝试进行一些多通道渲染,但无法理解如何使用/设置混合模式。
我已经完成了一个填充深度缓冲区的深度通道,然后我有一个循环遍历场景中的所有灯光。在那个循环中,我有 2 个循环,它们都遍历场景中的所有形状
我有这种设置
在 pix 中,我可以看到它循环穿过每个灯,但是当我运行它时,只显示灯阵列中的最后一个灯。我认为这与混合模式有关。
我查看了混合模式并找到了有关源和目标混合的信息。这是我需要的吗/有人可以帮忙解释一下吗?
提前致谢,
标记
[编辑]我使用以下代码使两个灯都可见
阴影看起来不正确,但我越来越接近预期的结果。
任何更多的建议会很棒,
谢谢,
标记
maps - 如何将pcf添加到阴影贴图中
我找到了这个链接,它解释了一些关于 pcf 阴影映射的信息。我查看了提供的代码示例,但无法确定偏移数组是什么。我假设它是一个 float2 数组,我知道它将偏移像素以提供相邻的像素。我只是不知道应该设置什么偏移量。
链接:http ://www.gamerendering.com/2008/11/15/percentage-closer-filtering-for-shadow-mapping/
这是代码
我一定只是错过了一些简单的东西
任何帮助表示赞赏
谢谢,
标记
c++ - 使用 D3DVERTEXELEMENT9 结构渲染线框无色立方体
我对这种结构很陌生,我从中学习的书对我来说非常不直观。我对代码进行了三次检查,但我无法弄清楚为什么我无法弹出图像。背景是白色的,HUD 在那里,但立方体不会出现。当我试图让它变成彩色时也是一样。