Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 高效调整DirectX窗口的大小_C++_Resize_Directx - Fatal编程技术网

C++ 高效调整DirectX窗口的大小

C++ 高效调整DirectX窗口的大小,c++,resize,directx,C++,Resize,Directx,我试图找到调整图形界面大小的最佳方法。我试着在不删除我所做形状的缓冲区的情况下重新初始化设备,但最终导致内存严重泄漏 在这个问题上我没有发现任何有用的东西 我是否需要删除所有[缓冲区、设备、适配器]&从头开始重新启动图形界面? 还是有一种有效的方法 这是用于DX 10/11接口的 编辑: 要显示的代码很多,但我只是: cleanup(); // Pointers related to the device initDevice(hWnd); // Create new device

我试图找到调整图形界面大小的最佳方法。我试着在不删除我所做形状的缓冲区的情况下重新初始化设备,但最终导致内存严重泄漏

在这个问题上我没有发现任何有用的东西

我是否需要删除所有[缓冲区、设备、适配器]&从头开始重新启动图形界面? 还是有一种有效的方法

这是用于DX 10/11接口的

编辑: 要显示的代码很多,但我只是:

   cleanup(); // Pointers related to the device
   initDevice(hWnd); // Create new device with updated size
   draw(stuff); // I never deleted my constant/index/vertex buffers
具体而言,我没有删除以下内容:

    ID3D11Buffer* constantBuffer;
    ID3D11Buffer* vertexBuffer;
    ID3D11Buffer* indexBuffer;
    ID3D11VertexShader* vertexShader;
    ID3D11PixelShader* pixelShader;
    ID3D11InputLayout* vertexLayout;

我希望通过不在用户每次调整大小时都重新创建图形来节省性能。

这里有一个解释您需要做什么的方法。你读过吗?

如果不看代码,我就说不出任何有用的东西,但在阅读你的描述时,我怀疑你必须重新分配一些缓冲区,而不是重用旧的缓冲区。当你从一个大的界面切换到一个小的界面时,这种情况总是会发生。编辑:我不确定要添加什么代码,但我希望这会有帮助。/尴尬的脸我在谷歌搜索时没有注意到这一点。现在来看看。文章不错,但可能写得太多了。如果您添加了不适合您的内容,这将非常有用。如果你创建一个有窗口的d3d设备,它会自动调整大小。您必须做的一件事是更改视口,可能还有与大小相关的矩阵。我看到很多代码都是手动交换链管理的,但没有什么好的理由。嗯,它比我预想的要容易。当我实现它时,它并不是太过分了。我注意到许多行与init步骤相同,但有3行不同。我用它做了一个函数,现在它工作得很好。@starmole:是的,我必须更新视口大小和矩阵比率参数。