- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
首先,我正在编写一个游戏。目前在渲染函数中有两个调用两个不同的函数。一个渲染一些文本,一个渲染 Sprite 。
在我的电脑上(AMD Phenom(tm) II X4 955 处理器(4 个 CPU),~3.2GHz,4096MB RAM DDR2,NVIDIA GeForce GTX 285)当渲染大约 200 个 Sprite 和大约渲染约 14,500 时为 100 FPS。
我正在使用一个 vector 来存储我正在渲染的每个对象的信息,并使用一个带有许多绘制调用的 Sprite 。
VS2008 Release模式,对 C++ 进行了全面优化。我知道我听说过 left 和 right 不会过早优化,但在这一点上,它对我来说运行得很好,但在某些计算机上却不太好。
我无法想象将 vector 换成数组,因为我每帧都在以一种不确定的方法从 vector 中推拉东西。几乎是随机的。
我已经尝试过 float 和 double,速度没有什么不同。
使用 DirectDraw 而不是 DirectX 和 Sprite Render 方法会有所不同吗?因为我不知道 DirectDraw 和 DirectX 之间的区别,所以我不是 100% 应该考虑的。
这款游戏在普通电脑上运行良好,但我将我的游戏与东方进行比较。东方在我试过的最弱的电脑上以 60 FPS 运行,但我的游戏运行速度不会超过 36~42 FPS。作为 DirectX 和 C++ 的新手,我无法想象自己做错了什么。
在这件事上的任何帮助都会很好,不幸的是我暂时不会在附近添加信息或回答问题。
最佳答案
你需要一个分析器。
响应中有一些很好的性能建议,但这并不重要。尝试在没有分析器的情况下优化程序就像尝试在没有编译器的情况下编写程序一样。不要猜测,测量。
话虽如此,分析图形代码是一个臭名昭著的难题,并且(据我所知)没有任何好的免费工具可以帮助解决这个问题。所以暂时不用担心:从一个普通的 CPU 分析器开始,找出您的哪些调用真正占用了您所有的时间。
关于c++ - DirectX9、DirectDraw、优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282735/
有人有 DirectDraw 叠加的工作示例(代码)吗?就像屏幕上移动的东西一样。我一直试图找到 DirectDraw 叠加用法的示例,但未能找到。 谢谢。 最佳答案 尝试其中一些: from gam
只是一个简单的 blt 函数: RECT dstRect = {dstL, dstT, dstR, dstB}; RECT srcRect = {srcL, srcT, srcR, srcB}; HR
问题 Windows Mobile / Directdraw: Rotate video stream 视频预览正常,我现在需要的是旋转图像的方法。我认为处理此问题的唯一方法是编写一个基于 CTran
我正在使用 WS_EX_LAYERED 创建一个窗口,并使用 SetLayeredWindowAttributes() 为其设置颜色键。我可以通过在窗口内使用 FillRect() 绘制一个简单的矩形
我正在修改一个旧的 Windows DirectDraw 游戏。我已经创建了一个 DirectDraw 代理。它记录每个 IDirectDraw 和 IDirectDrawSurface 调用。后台缓
我们正在维护一个使用 DirectDraw 的全屏 256 色图形模式的旧视频游戏。问题是,某些在后台运行的应用程序有时会在游戏运行时尝试更改系统调色板,从而导致图形损坏。 我们可以(有时)通过处理
Opengl 纹理坐标 [0,0] 位于左下角。 DDS 文件是否包含有关数据布局的信息(如果数据从左上角或左下角开始)或有一个固定的布局?例如 ktx 文件包含此类信息。 最佳答案 DDS 文件格式
我需要做一个简单的检查 dds 文件的格式是否有效。我只需要对 dds 文件进行一般检查,所以我不需要检查它是否是 dxt1、dxt5、dx10 等。例如,如果我有一个 png 图像并且我将扩展名重命
我正在使用一个全屏应用程序,该应用程序使用 DirectDraw 函数进行显示并且工作正常。现在我想用自己的窗口显示另一个应用程序,但另一个应用程序在启动时隐藏在全屏 Direct Draw 应用程序
昨天我找到了多年前用 C++、Win32 API 和 DirectDraw 7 开发的俄罗斯方 block 游戏的源代码。我尝试构建解决方案但没有成功,因为最近的 DirectX SDK (June
首先,我正在编写一个游戏。目前在渲染函数中有两个调用两个不同的函数。一个渲染一些文本,一个渲染 Sprite 。 在我的电脑上(AMD Phenom(tm) II X4 955 处理器(4 个 CPU
这是How do you draw text in DirectX 11?的后续问题 在 Direct3D-12 中,事情变得更加复杂,而且由于它是新的,我在网上找不到任何合适的库。 我正在构建一个基
当使用CachedBitmaps时在 GDIPlus 中,如果 Windows 视频“硬件加速”降低太多,则会出现图形损坏 - 例如禁用 DirectDraw: 硬件加速有六个级别: 禁用所有加速 禁
我正在尝试将二维数组转换为 DDS 并将其保存到文件中。 Array 充满了 Color 结构(每个结构都有红色、绿色、蓝色和 alpha 分量)。一旦我将数组设置为正确的格式,我确信将它保存到文件部
我正在开发一个视频录制应用程序,我想用 Logo 和录制计时器覆盖视频预览。 我尝试运行全屏应用程序,一切正常。然后我尝试将该应用程序作为常规 Windows 应用程序运行,但它返回了一个错误。 如果
我正在构建一个应用程序,它根据提供的两张图片(非 3D 模型)在 200 Hz 屏幕上绘制立体图像(立体图像)。所以重绘的速度完整性非常重要。我使用 DirectDraw 表面及其 Flip() 取得
当我执行 DirectDraw 方法失败时,如何在 DirectX 7 中获取失败错误字符串? if (FAILED(lpddPrimarySurface->SetPalette(lpddPalett
我有一个应用程序,在我的控制之外,几个 Windows 窗体设置了 TransparencyKey 属性。当这些窗口覆盖(在前面)另一个具有 DirectDraw 视频表面的窗体时,前景窗体会闪烁(部
这是我第一次使用 PHP Imagick 并遇到了问题。 我正在创建一个网站模块,用户可以在其中上传需要转换为包含上传图像作为 DDS 纹理的加密文件类型的图像。 所以我需要做的是将上传的图片转换为d
DDS 格式已经为 directX 制作好了吗?所以我猜应该针对它而不是针对 openGL 进行优化。 那么,还有另一种格式吗?如果是,什么格式是一个不错的选择?什么原因? 另外,因为我在 linux
我是一名优秀的程序员,十分优秀!