小编use*_*893的帖子

Sleep(1)和SDL_Delay(1)需要15 ms

我正在编写一个C++/SDL/OpenGL应用程序,我遇到了最奇怪的错误.通过简单的可变时间步长,游戏似乎运行良好.但随后FPS开始表现得很奇怪.我发现Sleep(1)和SDL_Delay(1)都需要15 ms才能完成.

在0-15之间的任何输入都需要15ms来完成,将FPS锁定在大约64.如果我将其设置为16,则需要30 MS OO

我不知道为什么会这样.这是我遇到过的最奇怪的错误.

我的循环看起来像这样:

while (1){
    GLuint t = SDL_GetTicks();
    Sleep(1); //or SDL_Delay(1)
    cout << SDL_GetTicks() - t << endl; //outputs 15
}
Run Code Online (Sandbox Code Playgroud)

它应该很少花费1ms,但大部分时间需要15ms.

我的操作系统是Windows 8.1.CPU是intel i7.我正在使用SDL2.任何想法都会受到赞赏,因为我一无所知.

c++ opengl sdl

6
推荐指数
1
解决办法
8705
查看次数

返回迭代器的函数缺少分号错误

我试图做一个间隔树的粗略抽象实现,但我得到一个奇怪的错误.我返回a的所有函数std::map<ui16, Node>::iterator都给出了错误:

错误C2146:语法错误:缺少';' 在标识符"FOO"之前

FOO函数的名称在哪里.

ui16简直就是一个typedef unsigned short.

有任何想法吗?

#include "stdafx.h"
#include <map>

//Very rough implementation of a specialized interval tree
//TODO: Replace std::map with a custom red-black tree implementation or something similar

template <typename T>
class IntervalTree {
public:

    struct Node {
        Node(T Data, ui16 Length) : data(Data), length(Length) {}
        T data;
        ui16 length;
    };

    inline void clear() {
        std::map<ui16, Node>().swap(_tree);
    }

    inline std::map<ui16, Node>::iterator getInterval(ui16 index) const {
        auto it = _tree.lower_bound(index); …
Run Code Online (Sandbox Code Playgroud)

c++ tree c++11

0
推荐指数
1
解决办法
195
查看次数

标签 统计

c++ ×2

c++11 ×1

opengl ×1

sdl ×1

tree ×1