direct3d相关内容
我一直在浏览CUDA文档,并且直接3D 11互操作性,并且它已被弃用。但是,该文档没有说明执行此操作的新方法是什么,或者为什么不建议这样做。我无法在Google上找到答案。有人知道吗? 解决方案 CUDA Direct3D互操作不被弃用。不推荐使用某些方法。 D3D11不推荐使用的API 在这里。已废弃的API 此处。 b $ b CUDA示例演示不推荐使用的D3D互操作方法。
..
出现了一个有趣的错误,我没有运气。在使用本机代码的Direct3D9窗口化程序中,我使用类似于以下内容的方法处理丢失的设备: void MyClass :: RecoverFromDeviceLost (LPDIRECT3DDEVICE9 deviceToRecover,D3DPRESENT_PARAMETERS devicePresentParams) { HRESULT h
..
因此,在观看dx12绑定视频并阅读了一些文档之后,我不确定100%是否确定我正确理解了如何管理堆。 让我解释我在应用程序中无法实现的目标: 在初始化期间,我将填充两堆,其中一堆容纳采样器,另一堆容纳SRV,CBV和UAV。 这些堆将包含应用程序在其生命周期内将使用的所有资源。 现在开始介绍有趣的部分。要构建根签名,我将主要使用根描述符表。 我们知道,一个表将包含范围,范围是基
..
在OpenGL中,有时在进行多遍渲染和后期处理时,我需要将图素应用于原始图元的汇编片段,这些片段是全屏纹理合成的一部分。当当前遍历来自FBO纹理要实现此目的,我在SCREEN SPACE中计算对象的UV坐标。在GLSL中,我按以下方式计算它: vec2 texelSize = 1.0 / vec2(textureSize(TEXTURE,0)); vec2 screenTexCoord
..
我正在尝试加速全屏纹理的绘制,该纹理每帧都会改变。在我的系统上,使用GDI和BitBlt()可以获得大约1000 FPS,但是我认为可以通过使用Direct3D和动态纹理来提高性能。取而代之的是,我只能达到大约250 FPS。 我正在运行带有当前驱动程序的ATI HD 4870的Mac Pro。 我尝试使用动态纹理,这给了我一个小增益(〜15FPS),并且我尝试使用纹理链来避免流水线停
..
根据 Microsoft的这篇文章用户设置的屏幕刷新率可以是(大部分是)小数。用户设置了59Hz,但屏幕以60Hz的屏幕显示速度运行,但实际上是59.94Hz。我需要一个非常平滑的动画,是59.94Hz。 使用 IDirect3DDevice9 :: GetDisplayMode 我只得到一个 int 值,根据定义它不能代表实际时间( EnumDisplaySettings )。我每秒遇到一
..
我正在编写一个DLL插件,该插件将读取桌面框架缓冲区(整个屏幕)并将其直接呈现为传入的Texture2D指针。目标是将所有内容保留在视频内存中(并避免复制的开销) 我能够通过Texture2D(显示为ID3D11Texture2D),但是在抓取桌面框架缓冲区时遇到问题与D3D11。 D3D9提供了GetFrontBufferData(),但似乎D3D11解决方案是使用GetBuffer()。
..
是否可以通过Direct3D API检测以全屏模式运行的Direct3D应用程序? SHQueryUserNotificationState ,可以指示这样的应用程序,仅在Vista及更高版本上受支持。 解决方案 我发现了如何检测全屏Direct3D和OpenGL(例如Minecraft)应用程序。 调用 IDirectDraw7 :: TestCooperativeLevel
..
最近我一直在玩Direct3D 11,并且由于缺乏有关API基础知识的文档(例如简单的几何图形渲染)而感到沮丧。稀疏文档带来的混乱点之一是(明显)不使用着色器效果。 在D3D11中,所有效果(.fx)支持都已从D3DX库中删除,并埋藏在很难找到的(当然是文档很少的)共享源中图书馆。所包含的示例均未使用它,而是直接编译HLSL文件。所有这些都对我说,Microsoft试图使人们停止使用效果文件
..
如何在D3D11中从6张图像创建立方体贴图?我发现的所有示例仅使用一个.dds。具体来说,如何上传立方体纹理的各个面? 解决方案 它的工作原理如下: D3D11_TEXTURE2D_DESC texDesc; texDesc.Width = description.width; texDesc.Height = description.height; texDesc.M
..
与窗口模式相比,在全屏模式下Direct3D应用程序的性能似乎要好得多。造成这种情况的技术原因是什么? 我想这与全屏应用程序可以独占显示权有关。但是,为什么应用程序无法获得屏幕(即窗口)的部分的排他控制权,并且具有相同的性能优势? 解决方案 以下是有关事物在下面如何工作的说明。 监视器屏幕始终需要与所谓的主表面关联才能显示任何内容,即视频卡只能从显存中的一个表面扫描出去。
..
我有一个带有两个纹理 t0 和 t1 的帧缓冲区。 在第一遍中,我使用多个片段着色器输出渲染它们两者。 在第二遍之前,我要执行以下操作: 打开仅具有一个输出的着色器 绑定 t1 到纹理单元 调用glDrawBuffers以禁止写入 t1 的附件 请注意, t1 用于采样,但仍绑定到当前帧缓冲区。据我了解,这种配置没有环回。 在OpenGL和WebGL中合法吗?
..
一段时间以来我一直在愚弄屏幕捕获,我设法捕获了整个屏幕,屏幕上的某些区域等等... 但是当我进入游戏并尝试捕获屏幕,它完全忽略了游戏,而是捕获了桌面(或游戏窗口后面的任何内容)。 另一个有趣的事实是PrtScn按钮也会发生同样的事情。 关于如何捕获游戏屏幕的任何想法? 解决方案 您正在使用的屏幕捕获技术可以很好地捕获非硬件加速的内容。我怀疑您尝试在Windows Media
..
我为DDB绘制操作定时,该操作使用多个 StretchBlt 和 StretchDIBits 调用。 我发现,完成时间是与目标窗口大小成比例的增加/减少。 对于900x600的窗口,它需要大约5ms,但是对于1920x1080的窗口,它需要的最大55ms(源图像为1280x640)。 似乎是可伸缩的。API不使用任何硬件加速功能。 源图像(实际上这是临时绘图画布)是使用 C
..
我了解在同一个应用程序中有几种混合XNA和WPF的方法。我发现在XNA游戏中将WPF用于所有GUI和HUD东西很诱人。是否有人对使用.NET 3.5 SP1在现实生活中如何有效地工作有任何实践经验?任何陷阱(例如“空域问题” )?关于哪种方法最有效的任何提示? 解决方案 3.5 SP1中有一个附加功能,可以在DirectX和WPF之间进行更好的交互(D3DImage ),一种实现方法是通过
..
所以我发现我的图形卡会自动将纹理的大小调整为2的幂,这通常不成问题,但是我只需要渲染纹理的一部分,并且这样做必须具有已经过的尺寸。调整为... 例如: 我将一张370x300像素的图片加载到纹理中,并尝试使用特定的源矩形进行绘制 RECT测试; test.left = 0; test.top = 0; test.right = 370; test.bottom =
..
在我的D3D 11项目中,我总是添加 #if(defined(DEBUG)|| defined(_DEBUG)) deviceFlags | = D3D11_CREATE_DEVICE_DEBUG; #endif / *(defined(DEBUG)||定义(_DEBUG))* / 到设备创建标志以启用调试输出。自从我升级到Windows 10以来,这不再起作用。
..
Direct3D专家您好, 我目前正在使用Direct3D开发一个应用程序,以便捕获我的两个显示器桌面(当然用作扩展桌面)。 以下代码效果很好,但我只能捕获主显示,而不能捕获扩展的桌面(只捕获一个屏幕两次) 我如何将此解决方案调整为双屏幕捕获? 首先,我初始化Direct3D: D3DDISPLAYMODE d3dDisplayMode; D3DPRESENT_PA
..
我想绘制DirectX内容,以便它似乎漂浮在桌面和任何其他正在运行的应用程序之上。我还需要能够使DirectX内容半透明,这样其他东西才能显示出来。有办法吗? 我在C#中使用托管DX。 解决方案 从OregonGhost提供的链接开始,我找到了一种适用于Vista的解决方案。这是使用C#语法的基本过程。此代码位于从Form继承的类中。如果在UserControl中,它似乎不起作用:
..
我对顶点缓冲区有疑问。如何从D3D11的顶点缓冲区中读取顶点?我想获得特定顶点的位置来进行计算,如果这种方法不正确,那该怎么办?以下代码(显然)无效。 VERTEX * vert; D3D11_MAPPED_SUBRESOURCE毫秒; devcon-> Map(pVBufferSphere,NULL,D3D11_MAP_READ,NULL,& ms); vert =(VERT
..