我正在编写一个SDL网络游戏,一切都很完美......但我的游戏只运行30fps,所以我运行了一个非常困难的分析。 第一个奇怪的效果,非常困,将我的游戏的性能提高到60Fps ......(为什么?) 其次,有很多SDL_LogCritical调用(您可以在此处获取报告:http://puu.sh/gauEi/9a852462e6.png)。控制台中没有显示任何内容。 (我也使用SDLNet,使用TCP协议,没有数据包松散)。
此外,我覆盖了SDL Logs的输出:
void log(void* userdata, int category, SDL_LogPriority priority, const char* message) {
std::cout << "Log : " << message << std::endl;
}
int main(int argc, char **argv) {
SDL_Init(SDL_INIT_EVERYTHING);
SDLNet_Init();
SDL_LogSetOutputFunction(log, NULL);
SDL_LogCritical(1, "TEST LOG");
}
我可以在控制台中看到“TEST LOG”。因此,消耗30%的SDL_LogCritical不会输出所有内容。
答案 0 :(得分:0)
我不知道什么是错的,但频繁调用日志功能表明出现了问题,SDL会试图告诉你。但是,输出的缺乏可能是由于您明确地或隐含地禁用日志记录到控制台。您对网络的使用可能表明您没有找到正确的控制台来查看这些警告。由于缺乏信息,诊断起来有点困难。
由于调试导致的性能提升很奇怪,但通常可以通过调试器使用与正常运行时完全相同的环境来解释。
好的,所以当别的东西调用SDL的日志功能时你就看不到输出了。这指向以某种方式记录的消息低于必要的优先级。比较SDL's source code以了解可能发生的情况。此时,您可能应该使用调试器来设置断点。