标签: directx-10

DirectX 10视频模式切换和性能

在DirectX 10应用程序中,在全屏模式和窗口模式之间切换会产生任何类型的开销,例如必须重新创建纹理和/或顶点缓冲区吗?

换句话说,我可以构建一个应用程序,它可以在窗口模式和全屏模式之间进行"大量"切换,而不会在交换机出现时遭受性能损失吗?

fullscreen windowed directx-10

4
推荐指数
1
解决办法
1413
查看次数

DirectX 设备大写

我在 DirectX 10 文档中阅读了以下内容:

“旧硬件功能位(上限)已被删除,以支持一组丰富的有保证的功能,这些功能针对 Direct3D 10 级硬件(最低)。”

“删除大写位 - Direct3D 10 的基本功能集得到保证。”

我在哪里可以找到他们谈论的“保证功能/基本功能集”的列表?

例如,在 DirectX 9 下,我可以查看 D3DCAPS9.MaxTextureWidth 以找到最大纹理宽度。我如何知道所有 DirectX 10 设备必须支持的最大尺寸?

c++ directx directx-11 directx-10

4
推荐指数
1
解决办法
3776
查看次数

DirectX 10中多重采样的操作顺序

我对在DirectX 10中需要为抗锯齿做的过程感到困惑.之前我还没有完成它,所以可能只是因为我对程序感到困惑.

以下是我目前所知的(或者我认为):您需要为在着色器中使用的RasterizerState对象启用多重采样,并且需要将交换链描述中的SampleDesc(DXGI_SWAP_CHAIN_DESC)设置为支持的值计数(并且质量应保持为0,因为其他值或特定于硬件 - 虽然我不知道为什么).在准备更多绘图的调用(ClearRenderTargetView和IASetInputLayout)和调用Present之间,后缓冲区应该被下采样(通过ResolveSubresource)到一个大小相等的纹理.然后,(这是我找不到任何东西的部分)以某种方式呈现下采样纹理.

我一路上有什么搞砸了吗?或者我在最后一步错了?我看到一些资源指的是在最后一次绘制过程中使用多重采样着色器纹理(Texture2DMS <>)进行全屏四边形的采样分辨率,但是无法弄清楚会带来什么,或者为什么要这样做设备调用以这种方式解决它.

我在此做的任何尝试都不会使图像质量有任何提高.

c++ directx-10

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

什么类型的字符串最适合Win32和DirectX?

我正在使用DirectX 10和C++开发一个小游戏,我发现各种不同的directx/win32函数调用需要各种不同类型的字符串.

任何人都可以推荐哪种各样的字符串是最好用的,理想情况下它是一种类型的字符串,可以为其他类型提供良好的强制转换(主要是LPCWSTR和LPCSTR).到目前为止,我一直在使用std :: string和std :: wstring,并使用.c_str()函数将其转换为正确的格式.

我想得到一种类型的字符串,我用它传递给所有函数,然后在函数内部进行转换.

c++ string winapi directx-10

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

尝试使用TriangleStrip Topologu创建三角形时的奇怪行为

我试图在输入汇编器设置为三角形条带的情况下创建这个2D三角形:

1.(0.0f, 0.0f, 0.5f)
2.(-0.5f, 0.0f, 0.5f)
3.(-0.5f, -0.5f, 0.5f)
Run Code Online (Sandbox Code Playgroud)

但是,没有绘制三角形,实际上渲染目标上没有绘制任何内容,甚至没有绘制单行.我搞砸周围,然后我换坐标23,和它的工作.正如我想要的那样绘制三角形.这种奇怪行为的原因是什么?

directx directx-11 directx-10

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

如何在版本之间进行迁移?

从directx 10到11有什么变化?我已经在directx 10中编写了一些代码,我想将其更改为directx 11.这仅仅是关于质量而我只能通过更改headrs和dll文件或函数以及编码方式来改变它吗?ING.

directx directx-11 directx-10

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

Win32:没有窗口出现

我正在编写Frank Luna的书"使用DirectX 10进行3D游戏编程简介"中的示例代码.代码是附录A:Windows编程部分中的第一个Win32示例.

现在,该程序在VC++ 2008/2010下编译,但没有窗口出现,虽然调试会话已经开始,我必须强制关闭它.我不知道它在哪里,我没有使用Win32控制台模式,我关闭了所有其他窗口,没有其他IDE或VC++会话正在运行.

知道为什么会这样吗?

PS:我还检查过我的进程.它确实在运行.

    #include <Windows.h>

    HWND ghMainWnd = 0;

    bool InitWindowsApp(HINSTANCE instanceHandle, int show);
    int Run();

    LRESULT CALLBACK
        WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);

    int WINAPI 
        WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR pCmdLine, int nShowCmd )
    {
        if( !InitWindowsApp(hInstance, nShowCmd) )
            return 0;

        return Run();
    }

    bool InitWindowsApp( HINSTANCE instanceHandle, int show )
    {
        WNDCLASS wc;

        wc.style         = CS_HREDRAW | CS_VREDRAW;
        wc.lpfnWndProc   = WndProc;
        wc.cbClsExtra    = 0;
        wc.cbWndExtra    = 0;
        wc.hInstance     = instanceHandle;
        wc.hIcon …
Run Code Online (Sandbox Code Playgroud)

windows winapi visual-c++ directx-10

0
推荐指数
1
解决办法
922
查看次数

Directx 10:使用CopySubresourceRegion更新顶点缓冲区

我有一个顶点缓冲区创建如下:

ID3D10Buffer * VertexBuffer;
Vertex_PosCol * Vertices;
D3D10_SUBRESOURCE_DATA VertexData;


    Vertices = new Vertex_PosCol[VerticeCount];

    Vertices[0].Position = D3DXVECTOR3(0.0f, 0.0f, 0.0f);
    Vertices[0].Color = D3DXVECTOR4(1.0f, 1.0f, 1.0f, 1.0f);

    Vertices[1].Position = D3DXVECTOR3(-1.0f, 2.0f, 0.0f);
    Vertices[1].Color = D3DXVECTOR4(1.0f, 0.0f, 0.0f, 1.0f);

    Vertices[2].Position = D3DXVECTOR3(1.0f, 2.0f, 0.0f);
    Vertices[2].Color = D3DXVECTOR4(0.0f, 1.0f, 0.0f, 1.0f);

    Vertices[3].Position = D3DXVECTOR3(2.0f, 1.0f, 0.0f);
    Vertices[3].Color = D3DXVECTOR4(0.0f, 0.0f, 1.0f, 1.0f);

    Vertices[4].Position = D3DXVECTOR3(2.0f, -1.0f, 0.0f);
    Vertices[4].Color = D3DXVECTOR4(1.0f, 1.0f, 0.0f, 1.0f);

    Vertices[5].Position = D3DXVECTOR3(1.0f, -2.0f, 0.0f);
    Vertices[5].Color = D3DXVECTOR4(0.0f, 1.0f, 1.0f, 1.0f);

    Vertices[6].Position …
Run Code Online (Sandbox Code Playgroud)

c++ dynamic vertex-buffer directx-10

0
推荐指数
1
解决办法
3191
查看次数