微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SDL2渲染纹理明显滞后于鼠标

我在Windows上使用SDL2(我已经testing了Windows 7和Windows 8)。 我正在玩渲染纹理locking到鼠标坐标创build一种“十字线”的效果

它可以工作,但纹理明显滞后于鼠标,在鼠标移动和渲染更新之间产生了一个尴尬的延迟。 老实说,这个延迟是非常小的,但是对于那些关心绝对准确性的人来说,这会使人疯狂。

我的问题基本上是这样吗? 我猜这个延迟是由于Windows将事件传递给SDL,然后SDL将事件传递给我所花费的时间。 如何通过SDL实现locking的“十字线”效果

我的代码供参考:

function不导出时寻找一个函数地址来调用

Windows Messenger中的MSN Messenger / Growl Style警报

是否有可能在OpenSUSE上降级glibc?

用VS 2010debugging导入的dll

高效地获取Windows桌面的屏幕截图

#include "SDL.h" int main( int argc,char* args[] ) { SDL_Init( SDL_INIT_EVERYTHING ); SDL_Window* window = SDL_CreateWindow("SDL",100,640,480,SDL_WINDOW_SHOWN); SDL_Renderer* renderer = SDL_CreateRenderer(window,-1,SDL_RENDERER_ACCELERATED); SDL_Surface* surface = SDL_LoadBMP("mouse.bmp"); SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer,surface); SDL_FreeSurface(surface); bool isExiting = false; int x = 0; int y = 0; while(!isExiting) { SDL_Event e; while(SDL_PollEvent(&e)) { if(e.type == SDL_QUIT) { isExiting = true; break; } else if(e.type == SDL_MOUSEMOTION) { x = e.motion.x; y = e.motion.y; } } SDL_Rect destRect; destRect.h = 19; destRect.w = 19; destRect.x = x; destRect.y = y; SDL_RenderClear(renderer); SDL_Rendercopy(renderer,texture,NULL,&destRect); SDL_RenderPresent(renderer); } SDL_Quit(); return 0; }

后台进程正在退出,比我可以添加其pipe理的PID更快

无法parsingDNS(有时候?)

如何在使用C#.Net的桌面应用程序中实现OAuth 1.0

创build一个不是创build它的进程的subprocess

“堆”在哪里?

虽然我不能确定为什么你的循环滞后,SDL支持改变鼠标的表面,以及一些你可能感兴趣的其他功能。似乎你可以把SDL_CreateColorCursor(SDL_Surface* surface,int hot_x,int hot_y)好用。 这里是鼠标支持的维基页面链接: http : //wiki.libsdl.org/CategoryMouse

快乐的编码!

在我正在进行一个项目中,我做了这样的事情:

(在主游戏循环之外):

SDL_Texture* cursor = //blah; SDL_Rect cursor_hitBox; SDL_QueryTexture(cursor,&cursor_hitBox.w,&cursor_hitBox.h);

(在主游戏循环中):

SDL_GetMouseState(&cursor_hitBox.x,&cursor_hitBox.y);

虽然使用这个我没有真正注意到任何输入滞后。 也许这只是事件类型?

请注意,这很可能不是那么高效,因为您将在每一帧中获取鼠标状态,而不是仅在您移动鼠标时。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐