如何发送D3D设备提供参考(DirectX/C++编程)
How to send D3D Device by giving reference ( DirectX/C++ Prgoramming )
H1。我正试图将代码分成不同的.cpp和.h文件,以使它们更容易查找、查看和理解。以下是我现在要做的:我有一个Meshes.cpp,它是我的主.cpp源文件。在Render函数(Render())中,我必须调用一个名为SetupMatrix的函数:
这是我的"d3dGeneral.cpp"文件:
// Begining of the "d3dGeneral.cpp"
#include "DXUT.h"
VOID SetupMatrices( LPDIRECT3DDEVICE9 *PDev )
{
D3DXMATRIXA16 matProj;
D3DXMatrixPerspectiveFovLH( &matProj,
D3DX_PI / 4,
1.777777777777778f,
1.0f,
1000.0f );
PDev->SetTransform( D3DTS_PROJECTION, &matProj ); // The problem is here......
}
//Enging of the "d3dGeneral.cpp"
这是我的"Meshes.cpp"文件:(这是主cpp文件)
// Begining of the "Meshes.cpp" file.
#include "DXUT.h"
#include "XMesh.h"
#include "Camera.h"
#include "d3dGeneral.cpp"
...
...
//Usualy SetupMatrices is found here.
...
...
VOID Render()
{
SetupMatrices( &g_pd3dDevice );
...
...
...
}
INT WINAPI wWinMain( HINSTANCE hInst, HINSTANCE, LPWSTR, int nCmdShow)
{
...
...
...
Render();
...
...
...
}
// End of the "Meshes.cpp" file
名为DXUT.h的头文件包含其他常规包含。所以,当我这样做的时候,我会得到一个错误:
错误2错误C2227:"->SetTransform"的左侧必须指向class/struct/union/generic类型c:\users\catt\destdesk\deneme\ddgeneral.cpp 74 MeshClass
我知道这意味着什么,但我不知道如何避免。看起来我的指针有问题。我也试着这样使用PDev:
*PDev->SetTransform( D3DTS_PROJECTION, &matProj ); // ???
我知道我不必在该函数中使用d3dDevice作为参考,但我也有一个函数清理。我想我需要为它提供参考,因为它必须清洁真正的设备本身,而不是它的副本。我希望我解释得对。如果你能帮我,那就太好了。谢谢你抽出时间。。。
你试过这个吗:
(*PDev)->SetTransform( D3DTS_PROJECTION, &matProj );
LPDIRECT3D9DEVICE
已经是指针。您不需要指向它的指针。只需按值取LPDIRECT3D9DEVICE
即可。
当然,我个人更喜欢IDirect3D9Device*
,因为它更清晰,此外,我喜欢将原始指针存储在智能指针中。
相关文章:
- 如何在directx/c++中进行平移/缩放操作
- DrawIndexedInstanced 具有不同的 Index Count per Instance (Directx
- Directx 11 - CompileFromFile() is not compiling
- 字节数组初始化会导致 DirectX 崩溃
- 在 DirectX 11 中从 GPU 读回顶点缓冲区(并获取顶点)
- 是否可以使用 DirectX 3D 11 绘制由三角形组成的圆?
- Directx 12 :在两个进程之间共享图形内存
- DirectX 11 如何处理来自 GPU 上的 sharedHandle 的图像
- > 64k C++的 DirectX 大型机型
- Linking DirectX
- C++ Visual Studio 错误:名称后跟'::'必须是类或命名空间名称 (DirectX 11)
- DirectX 11 - 点光源阴影
- DirectX 12 和 C++ CLI :无法使用IID_PPV_ARGS
- DirectX 11 -- Hello Triangle 未呈现 -- 原因:运行时库C++多线程
- DirectX 11 引擎在第三次代码改进后没有突然运行,我不知道为什么
- 如何防止 DirectX C++程序的拉伸/缩放
- 什么是 DirectX 9 中的数据流?
- DirectX 9 在重置调用之间保留状态
- 无法使用 Visual Studio 启动 DirectX 11 可执行文件,生成工作正常
- 如何在 DirectX 中初始化 XMVECTOR?