问题标签 [directx-9]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1261 浏览

c++ - DirectX9 Lighting C++ Lighting 不工作

这是一个绘制带有纹理的 3d 立方体的简单程序。问题是我看不到纹理,因为灯不工作。我关掉灯只是为了确保纹理在那里。所以如果有人能帮我弄清楚为什么灯不工作,我将不胜感激。

///////////////////////////////////////// /////////////////////////////////.h头文件

编译用一次

包括 // 用于随机数

包括

包括

包括

包括

包括

包括“DirectXInput.h”

包括

包括

杂注注释(lib,“d3d9.lib”)

杂注注释(lib,“d3dx9.lib”)

pragma comment(lib, "winmm.lib")//for timeGetTime()

杂注注释(lib,“dinput8.lib”)

杂注注释(lib,“dxguid.lib”)

// 安全释放 com 对象的宏

定义 SAFE_RELEASE(x) if(x) {x->Release(); x = 0;}

// 直接输入版本

定义 DIRECTINPUT_VERSION 0x0800

// 定义窗口大小

定义 SCREEN_WIDTH 800

定义 SCREEN_HEIGHT 600

//#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ|D3DFVF_DIFFUSE)

类 DirectXGame { 结构顶点 { D3DXVECTOR3 位置;D3DXVECTOR3 正常;D3DXVECTOR2 紫外线;}; IDirect3D9* m_pD3DObject;IDirect3DDevice9* m_pD3DDevice;

公共:DirectXGame(无效);〜DirectXGame(无效);void Initialize(HWND hWnd,HINSTANCE hInst, bool bWindowed); bool isDeviceLost(); 无效更新(HWND hWnd,bool& bWindowed,双 dt);无效渲染();无效检查位置();无效关机();

};

0 投票
1 回答
3576 浏览

c++ - (DirectX) 生成一个旋转矩阵来匹配一个向量

我怎样才能获取一个向量并生成一个矩阵,该矩阵将旋转一个网格以沿着该向量面对?

规格:

我希望我的玩家的模型旋转以面对相机正在寻找的方向。现在,它总是指向它开始的方向,转动只会让相机看着玩家的一面。

我已经尝试了 D3DXMatrixYawPitchRoll,并取得了部分成功。然而,我注意到在完美对齐时出现了一些时间偏移,当我在偏航时尝试俯仰时,它出现了一些奇怪的摇晃问题。

0 投票
2 回答
6144 浏览

c++ - 将网格从 .obj(或任何其他)文件加载到 DirectX9/C++ 项目中

目前我有一个通过写坐标绘制的3D 立方体,它可以在黑屏上旋转和移动。现在我有一个在“3Ds Max”中创建的模型(这是一个带有高石墙的小后院,所以我试图将它用作我的世界对象。)我想将此模型加载到我的DirectX9/C++ 项目中。 据我在 DirectX SDK 示例中看到的,此代码用于加载.X模型(它需要一个“3Ds Max”插件来导出这种扩展。我不确定。)

将 .X 文件加载到 DX9/C++ 中的代码:

是否有像“D3DXLoadMeshFromOBJ(.....)”这样的函数来加载对象?如何加载和渲染.OBJ文件?8(

我的另一个问题是.X文件和.OBJ文件有什么区别,我应该使用它们中的哪一个?

0 投票
4 回答
1313 浏览

c++ - 字符数组末尾的额外字符 (char *Result = new char) 8OI

我有一个 C++ 函数,它将 LPSTR 类型变量拆分为一个字符数组 (char*) 示例:

这是我要写的功能:

h=0; for(int i=0;i

实际上它并没有那么糟糕。问题是当我声明一个 char 数组(char *Result = new char;)时,它不知道长度是多少我在最终结果(结果)的末尾增加了一个额外的字符,我真的被困在这里如果您有任何想法或建议,请告诉我。感谢您的任何建议和回应。

解决方案是在函数末尾添加这个:

0 投票
2 回答
1878 浏览

c++ - C ++如何上下捕捉鼠标滚轮?

鼠标滚轮 up 和 down是否有任何ascii值。我为鼠标滚轮找到了这个,但这个不在乎我是向下滚动还是向上滚动 8) 并在启动状态下运行。

感谢您的任何帮助和建议。

0 投票
2 回答
407 浏览

c++ - 如何通过提供参考发送 D3D 设备 (DirectX/C++ Prgoramming)

H1。我试图将我的代码分成不同的.cpp.h文件,以使它们更容易找到、查看和理解。这是我现在要做的事情:我有一个Meshes.cpp,它是我的主要.cpp源文件。在渲染函数(Render())中,我必须调用一个名为SetupMatrices的函数:

这是我的“ d3dGeneral.cpp ”文件:

这是我的“ Meshes.cpp ”文件:(这是主cpp文件)

名为DXUT.h的头文件包含其他常规包含。所以,当我这样做时,我得到一个错误:

错误 2 错误 C2227:'->SetTransform' 左侧必须指向类/结构/联合/通用类型 c:\users\catt\desktop\deneme\d3dgeneral.cpp 74 MeshClass

我知道这意味着什么,但我不知道如何避免它。看来我的指针有问题。我也尝试像这样使用PDev:

我知道我不必在该函数中使用 d3dDevice 作为参考,但我也有一个函数Cleanup。我想我需要为它提供参考,因为它必须清理真正的设备本身而不是它的副本 8)。我希望我正确地解释了自己。如果你能帮助我,那就太棒了。感谢您抽出时间...

0 投票
1 回答
115 浏览

c++ - 目录路径错误,我做错了吗

我有我的 .exe 和三个文件夹。每个文件夹中都有一个 .txt 文件,我的程序会读取该文件和一些要加载的图像。当一切都与 .exe 一起使用时一切正常,但现在它在文件夹中已停止工作。

我认为问题在于,在文件夹 A 中有 A.txt 加载 A.png 正在工作,但 A.txt 也从文件夹 B 加载 B.png。我已将 B/B.png 放入 A.txt 但我认为这可能是问题所在。

问题是我想上一层然后再回到另一个文件夹吗?

并且是我可以在路径名中放入的命令,例如 upfolder/B/B.png 或者是将文件夹 B 放入我不想做的文件夹 A 中的唯一选项。

或者,如果有更好的方法或按类型组织资源,我愿意改变。

编辑:您要求提供代码,但这一切都与程序之外的东西有关。但我给你一个我正在走的路径的例子。

用户/文档/地图/map.txt

在该地图 .txt 中有 monster/yeti.txt 行,该文件的完整路径是 user/documents/monster/yeti.txt

如何将 map.txt 中的路径从地图文件夹中写入怪物文件夹?

0 投票
1 回答
1143 浏览

antialiasing - 使用 DirectX 9;Sprite 抗锯齿光晕

所以我在 DirectX 9 中编码,每当我在 2D 世界中放置一个精灵时。精灵图像 p 周围出现了一个白色的“光环”。我正在使用 PNG,精灵背后的背景是透明的。我也尝试过使用粉红色背景。光晕似乎只出现在像素的直线上,但只出现在某些边缘上。任何帮助是极大的赞赏!

谢谢彼得

0 投票
3 回答
377 浏览

c++ - 有时会显示透明颜色

我正在使用 LPDIRECT3DTEXTURE9 来保存我的图像。

这是用于显示我的图片的功能。

根据这本书,我有显示为最后一个参数的 RGB 颜色不会显示在屏幕上,这就是你创建透明度的方式。

这在大多数情况下都有效,但会在我的图像和图片边缘留下一条粉红色的线。经过反复试验,我发现如果我回到 Photoshop,我可以通过用粉红色绘制来消除粉红色框。这可以通过左侧的船只看到。

我开始认为 Photoshop 正在混合图像的边缘,因此尽管我没有证据,但背景并不是完全一样的粉红色阴影。在此处输入图像描述

任何人都可以通过编程来帮助解决这个问题还是图像中的错误?

如果有人擅长 Photoshop,他们可以告诉我如何修复图像,我主要使用 png,但如有必要愿意更改。

编辑:按要求创建纹理代码

0 投票
1 回答
1446 浏览

c++ - 以扩展模式将 DirectX 窗口从一台显示器移动到另一台显示器

我有一个简单的 directX-9 测试应用程序,我想以扩展模式从一台显示器移动到另一台显示器。
窗口和设备是在主监视器上创建的,并且场景绘制正确,但是当我将窗口移动到第二个监视器时,它会冻结。没有错误,甚至当前的调用也没有失败,但没有更新窗口。一旦我将窗口移回主监视器,一切都会再次正常。
任何人都可以给我一个提示我缺少什么来让它工作吗?