标签: directx-11

DirectX11 ReportLiveObjects实例化

ReportLiveObjects的MSDN页面

我不确定如何调用ReportLiveObjects方法,因为我试图声明的类是抽象的,或者在IDXGIDebug"unclared"的情况下(我想我错过了一个头文件?).

这是片段.

    ID3D11Debug *debugDev = new ID3D11Debug();
    debugDev->ReportLiveDeviceObjects( D3D11_RLDO_DETAIL );
Run Code Online (Sandbox Code Playgroud)

上面的代码告诉我类是抽象的,所以我不能创建一个对象.

IDXGIDebug debugDev = new IDXGIDebug();
Run Code Online (Sandbox Code Playgroud)

上面的代码告诉我IDXGIDebug是未声明的.

头文件"DXGI"已包含在内.调试层已打开.

任何帮助,将不胜感激.

c++ debugging directx layer directx-11

3
推荐指数
1
解决办法
6065
查看次数

HLSL中的镜面反射

我试图了解HLSL和DirectX11中的镜面反射

cbuffer ConstantBuffer : register( b0 )
{
    matrix World;           // ??????? ????
    matrix View;            // ??????? ????
    matrix Projection;      // ??????? ????????
    float4 vLightDir[3];    // Dir of light
    float4 vLightColor[3];  // color of light
    float4 vOutputColor;    // Active color
    //float3 Eye;
}

struct VS_INPUT                 // ???????? ?????? ?????????? ???????
{
    float4 Pos : POSITION;      // ??????? ?? X, Y, Z
    float3 Norm : NORMAL;       // ??????? ?? X, Y, Z
};

struct PS_INPUT                 // ???????? ?????? ??????????? ???????
{ …
Run Code Online (Sandbox Code Playgroud)

c++ directx graphics hlsl directx-11

3
推荐指数
1
解决办法
3868
查看次数

在 DirectX 11 中渲染

当帧开始时,我会进行逻辑更新并在此之后进行渲染。在我的渲染代码中,我做通常的事情。我通过调用 Draw 设置了几个状态、缓冲、纹理和结束。

m_deviceContext->Draw(
        nbVertices,
        0);
Run Code Online (Sandbox Code Playgroud)

在帧结束时,我调用present 来显示渲染帧。

// Present the back buffer to the screen since rendering is complete.
if(m_vsync_enabled)
{
    // Lock to screen refresh rate.
    m_swapChain->Present(1, 0);
}
else
{
    // Present as fast as possible.
    m_swapChain->Present(0, 0);
}
Run Code Online (Sandbox Code Playgroud)

平时的东西。现在,当我调用 Draw 时,根据 MSDN

Draw 将工作提交给渲染管道。

这是否意味着数据被发送到 GPU 并且主线程(称为 Draw 的线程)继续?还是等待渲染完成?

在我看来,只有 Present 函数应该让主线程等待渲染完成。

directx-11

3
推荐指数
1
解决办法
2061
查看次数

了解 ID3D11Device 和 ID3D11DeviceContext

我有一些问题的理解之间的差异ID3D11DeviceID3D11DeviceContext

  • 是否ID3D11Device代表您的 GPU 并ID3D11DeviceContext用于功能,以控制device?

  • 为什么需要 2 个对象?

  • 哪个函数与设备一起使用,哪个与设备对象一起使用?

  • 哪个对象将最终图像发送到后台缓冲区?

  • 后台缓冲区在ID3D11RenderTargetView对象中,不是吗?

  • 哪些对象连接到交换链,为什么?

c++ directx-11

3
推荐指数
1
解决办法
1619
查看次数

如何在 DirectX 11 应用程序中提供选择图形适配器的选项?

我想我知道它应该如何工作 - 只有它没有。我有一台带有 860m 和英特尔集成卡的联想笔记本电脑。

我可以使用两个 gpu 从外部运行我的应用程序,一切正常:选定的 gpu 将是索引为 0 的适配器,它具有笔记本电脑屏幕作为输出等。

但是,如果我尝试使用索引为 1 的适配器(如果我正常运行应用程序,那就是 nvidia,如果我使用 nvidia gpu 运行它,那就是英特尔),IDXGIOutput::EnumOutputs 找不到任何东西,所以我无法正确配置显示设置。

我正在考虑简单地跳过配置,或者使用其他适配器的输出 - 但是没有办法过滤掉没有实际输出的适配器 - 例如我的电脑也有一个集成卡,但它没有物理连接的显示器,所以使用它应该是不可能的。

我还试图找到“使用图形处理器运行”上下文菜单按钮的确切功能,但我找不到任何东西。

目标是让用户能够在应用程序内选择适配器,他/她的选择被保存到配置文件中,并在重新启动后使用 - 但我找不到过滤可能的适配器的方法。

c++ gpu directx-11 display

3
推荐指数
1
解决办法
1351
查看次数

DirectX 11 什么是着色器资源视图

阅读本书:“使用 Direct3D 11 进行实际渲染和计算”,并在线查找定义:https : //docs.microsoft.com/en-us/windows/uwp/graphics-concepts/shader-resource-view-- srv-

我仍然对 ID3D11ShaderResourceView 是什么感到困惑。

请记住,我正在学习 DirectX 11 来创建视频游戏。考虑到这一点 ...

什么是着色器资源视图?在什么情况下您会使用着色器资源视图?最重要的是,您如何使用着色器资源视图?

我假设你可以在你的 HLSL 代码中使用这个资源,但在书中我还没有看到一个关于如何做到这一点的例子,以及它用于视频游戏引擎的通用方式。

谢谢!

shader directx-11

3
推荐指数
1
解决办法
4293
查看次数

HSLS float1,..., float4 and its fields

I see that HSLS has float and a number after float (1-4) and a lot of fields (r, rr, rrrr, arar,...) (I see these fields with the help of HLSL Tool Thanks to Tim Jones :D - I can't imagine (for now) how can we programming HSLS without this tool).

I try to find references about this data type and its field but I can't find anything about it(why the number 1-4 and the meanings of its fields. In C++ …

hlsl directx-11

3
推荐指数
1
解决办法
3616
查看次数

如何在Visual Studio中多次编译hlsl着色器?

我已将 HLSL 着色器添加到我的 Visual Studio 项目中,并且作为构建过程的一部分,它们会自动编译为 cso 文件。我面临的问题是,我需要使用不同的着色器模型多次编译它们,因为“/4_0_level_9_3”适用于 DirectX 11,但不适用于 DirectX 9,而“/3_0”仅适用于 DirectX 9,但不适用于在 DirectX 11 上。

向 Visual Studio 项目多次添加相同的文件不起作用,我想避免复制 HLSL 源文件,因为它会增加维护工作量和潜在的错误原因。我也无法在 Visual Studio 中创建单独的目标/配置来实现此目的,因为我需要在可执行文件中支持两个 DirectX 版本(可在运行时切换)。

有没有办法在 Visual Studio 中为单个 HLSL 文件指定多个编译(不同的着色器模型和不同的输出文件)?

hlsl directx-11 directx-9 visual-studio-2017

3
推荐指数
1
解决办法
1690
查看次数

如何在DirectX11中设置RenderState?

如何在DirectX11中设置renderState?

device-> SetRenderState()似乎不再存在.

directx-11

2
推荐指数
1
解决办法
5568
查看次数

D3D11CreateDevice()返回垃圾值并失败

我刚开始用DirectX11的3D游戏编程学习直接3D .

我按照第一个教程得到了一个MessageBox,说"D3D11CreateDevice失败".

我检查了这个函数的返回值并获得了垃圾值-2005270483.十六进制值0x887a002d,人们说这是DXGI_ERROR_SDK_COMPONENT_MISSING错误的.

但是,我找不到任何有关它的信息.此外,它没有D3D11CreateDevice()MSDN通知的可能值.

以下是创建D3D设备的书的代码:

bool D3DApp::InitDirect3D()
{
    // Create the device and device context.

    UINT createDeviceFlags = 0;
#if defined(DEBUG) || defined(_DEBUG)  
    createDeviceFlags |= D3D11_CREATE_DEVICE_DEBUG;
#endif

    D3D_FEATURE_LEVEL featureLevel;
    HRESULT hr = D3D11CreateDevice(
        0,                 // default adapter
        md3dDriverType,
        0,                 // no software device
        createDeviceFlags, // createDeviceFlags, 
        0, 0,              // default feature level array
        D3D11_SDK_VERSION,
        &md3dDevice,
        &featureLevel,
        &md3dImmediateContext);

    if( FAILED(hr) )
    {
        // I added this part to check out …
Run Code Online (Sandbox Code Playgroud)

c++ directx-11 windows-8.1

2
推荐指数
1
解决办法
2831
查看次数