我有一个sdl/opengl游戏我正在努力工作.我平均得到了一个不错的fps,但是运动真的很不稳定,因为SDL_GL_SwapBuffers()会随机地花费很长时间来处理.加载纹理并将其写入缓冲区有时需要超过100毫秒!我删掉了很多代码,试图弄清楚是不是我做错了但是运气不好.当我运行这个裸骨程序时,它有时会阻塞长达70毫秒.
主要:
// Don't forget to link to opengl32, glu32, SDL_image.lib
// includes
#include <stdio.h>
// SDL
#include <cstdlib>
#include <SDL/SDL.h>
// Video
#include "videoengine.h"
int main(int argc, char *argv[])
{
// begin SDL
if ( SDL_Init(SDL_INIT_VIDEO) != 0 )
{
printf("Unable to initialize SDL: %s\n", SDL_GetError());
}
// begin video class
VideoEngine videoEngine;
// BEGIN MAIN LOOP
bool done = false;
while (!done)
{
int loopStart = SDL_GetTicks();
printf("STARTING SWAP BUFFER : %d\n", SDL_GetTicks() - loopStart);
SDL_GL_SwapBuffers();
int total …Run Code Online (Sandbox Code Playgroud) 我为leetcode问题17创建了两个解决方案,其中它要求您从电话号码组合生成所有可能的文本字符串,例如"3"结果["d","e","f"].
我的第一个解决方案使用递归算法生成字符串,如下所示:
class Solution {
public:
void fill_LUT(vector<string>& lut) {
lut.clear();
lut.push_back(" ");
lut.push_back("");
lut.push_back("abc");
lut.push_back("def");
lut.push_back("ghi");
lut.push_back("jkl");
lut.push_back("mno");
lut.push_back("pqrs");
lut.push_back("tuv");
lut.push_back("wxyz");
}
void generate_strings(int index, string& digits, vector<string>& lut, vector<string>& r, string& work) {
if(index >= digits.size()) {
r.push_back(work);
return;
}
char idx = digits[index] - '0';
for(char c : lut[idx]) {
work.push_back(c);
generate_strings(index+1, digits, lut, r, work);
work.pop_back();
}
}
vector<string> letterCombinations(string digits) {
vector<string> r;
vector<string> lut;
fill_LUT(lut);
if(digits.size() <= 0) …Run Code Online (Sandbox Code Playgroud)