jjzjj

SDL_CreateThread

全部标签

c++ - 为什么我在所有像素的双 for 循环中使用 SDL2 和 SDL_RenderCopy 时性能不佳?

我正在使用SDL2编写光线转换游戏。绘制地板时,我需要按像素调用SDL_RenderCopy。这会导致帧率下降到10fps以下的瓶颈。我正在寻找性能提升,但似乎找不到。以下是性能下降的粗略概述:intmain(){while(true){for(x=0;x 最佳答案 您可能应该为此使用纹理流。基本上,您将创建一个SDL_TEXTUREACCESS_STREAMING类型的SDL_Texture,然后在每一帧“锁定”纹理,更新您需要的像素,然后再次“解锁”纹理。然后在单个SDL_RenderCopy调用中渲染纹理。LazyFoo示例-

c++ - 使用 _beginthread 和 CreateThread 的多线程

我尝试用C++编写多线程WIN32应用程序,但由于我遇到了困难。其中一个窗口过程创建了一个线程,它管理这个窗口的输出。如果此窗口过程收到一条消息(来自其他窗口过程),它应该将其传输到它们的线程。一开始我使用_beginthread(...)函数,但是什么不起作用。然后我用CreateThread(...)函数尝试了它,它有效吗?我做错了什么?(我的英语不太好,希望你能理解我的问题)使用CreateThread(...)编写代码:DWORDthHalloHandle;//globalHWNDhwndHallo;//HwndofWndProc4...LRESULTAPIENTRYWndPr

c++ - SDL_RENDERER_PRESENTVSYNC 显示不一致

我最近决定开始使用SDL作为我的库之一来编写C++游戏。在我编写程序和学习SDL的过程中,我偶然发现了我的程序中的一个特殊错误,并决定在SSCCE中复制它以确保我没有发疯。问题似乎是当我将SDL_RENDERER_PRESENTVSYNC作为标志传递给SDL_CreateRenderer时,我得到不一致的渲染。为了进行比较,我在有标志的情况下运行了程序50次,在没有标志的情况下运行了50次,并且在每种情况下都对我的程序进行了唯一更改。没有标志,显示器在100%的时间内工作。启用标志后,50次中只有13次渲染成功。程序如下:#include#includeintmain(intargc,

c++ - 通过命令行设置SDL2 mac

我正在尝试将SDL2设置为与g++、文本编辑器和终端一起使用。我在/Library/Frameworks中有我的SDL2.framework。我的桌面上有一个名为testsdl的文件夹,其中包含两个文件:1)main.cpp2)生成文件当我键入make时,出现以下错误:main.cpp:2:10:fatalerror:'SDL2/SDL.h'filenotfound。这是我的makefile的拷贝CXX=g++SDL=-frameworkSDL2CXXFLAGS=-Wall-c-std=c++11-I~/Library/Frameworks/SDL2.framework/Headers

c++ - SDL_TTF 绘制垃圾

前几天我问了一个问题,关于使用SDL渲染TTF字体,并被指向SDL_TTFL我已经尝试使用SDL_TTF库,但我得到的只是屏幕上的垃圾我已经包含了我的着色器,这对于这个程序来说非常简单,还有我用来将文本加载到表面并将其绑定(bind)到纹理的片段。我根本不想在这里做任何疯狂的事情。你能看到我做错了什么吗?我不太确定如何调试着色器等。片段着色器(frag.glsl):#version330invec2texCoord;invec4fragColor;outvec3finalColor;uniformsampler2DmyTextureSampler;voidmain(){finalCol

c++ - 使用 SDL2 指定 OpenGL 版本

我正在使用装有OSX10.9.2的Macbookair我的显卡是(IntelHDGraphics40001024MB)Apple表示,具有我的规范的Macbookair最高支持Opengl4.1,您可以在此处阅读->http://support.apple.com/kb/HT5942.然而,当我使用SDL2并强制系统使用opengl3.2以及当我通过glGetString()查询OpenGL版本时,我得到以下行:2.1INTEL-8.24.11我的代码:#include#include#includeusingnamespacestd;voidsdldie(constchar*msg)

c++ - SDL_HWSURFACE 和 SDL_SWSURFACE 在速度和性能方面有什么区别?

SDL_HWSURFACE与SDL_SWSURFACE甚至SDL_FULLSCREEN?这里的优点和缺点是什么?我认为硬件要快得多。http://www.libsdl.org/docs/html/sdlsetvideomode.html 最佳答案 SDLWiki说得最好:SDL_SWSURFACESDL将在系统内存中创建界面。这提高了像素级访问的性能,但是您可能无法利用某些类型的硬件blitting。SDL_HWSURFACESDL将尝试在显存中创建表面。这将允许SDL利用Video->Videoblits(通常是加速的)。我的想法

没有 Xcode 的 macosx 上的 C++ SDL

系统:运行MacosX10.5.5(Leopard)的黑色Macbook我想仅使用g++编译SDLhello-world应用程序。Xcode适用于macintosh,但我想要跨平台兼容性,所以我不会使用任何coaca框架(没有菜单、没有按钮等)。此外,将Xcode项目移植到其他操作系统并不是一件听起来很有趣的事情。我将SDL下载并安装到/Library/Frameworks中。最大的问题是:makefile中包含什么(假设源代码中只有一个helloWorld.cpp文件)。我想避免修改找到的Helloworld文件here如果可能的话。 最佳答案

c++ - 如何在 SDL_surface 中设置像素?

我需要使用thispage中的以下函数.SDL_Surfacestructure定义为typedefstructSDL_Surface{Uint32flags;/*Read-only*/SDL_PixelFormat*format;/*Read-only*/intw,h;/*Read-only*/Uint16pitch;/*Read-only*/void*pixels;/*Read-write*/SDL_Rectclip_rect;/*Read-only*/intrefcount;/*Read-mostly*/}SDL_Surface;函数是:voidset_pixel(SDL_Sur

c++ - SDL_GetTicks()精度在毫秒级以下

我目前使用SDL2编写程序。一切正常,但我对SDL_GetTicks()方法有疑问。通常它应该返回以毫秒为单位的总应用程序时间,但它总是在大多数情况下返回值0,有时返回值1。我用SDL_INIT_EVERYTHING标志初始化了SDL。以下代码的问题是循环太快,所以增量时间小于1毫秒。有没有办法达到更高的精度?#include"Application.hpp"voidApplication::Initialize(){intsdl_initialize_result=SDL_Init(SDL_INIT_EVERYTHING);if(sdl_initialize_result