jjzjj

SDL_SetVideoMode

全部标签

c++ - 没有 OpenGL 的 SDL 抗锯齿?

我正在尝试使用SDL在C++中制作游戏。我想在图形中实现抗锯齿功能,但我在网上搜索到的有关该主题的所有内容都建议使用外部库或也涉及OpenGL的解决方案。有没有办法在没有OpenGL的情况下进行抗锯齿处理(例如事先修改图形,或者可能是我没有找到的某些功能)?如果不是,将用SDL编写的游戏转换为也使用OpenGL有多难(我以前没有使用过OpenGL...)? 最佳答案 一个老问题,但我有同样的问题。让我解决未回答的部分。"Isthereawaytodoanti-aliaswithoutOpenGL(suchasmodifyingthe

c++ - SDL 2.0 -> 传递了一个 NULL 互斥体

当我使用SDL2.0编译一个简单示例时,在命令SDL_CreateWindow之后,出现以下错误:“传递了一个NULL互斥量”。我正在使用静态库项目。我也在OSX10.8.3上进行测试。此通知在命令行编译时遗漏了什么?下面是生成程序的命令行和代码示例。编译器:clang++-I"TestSDL/sdl/include"-Wall-c-xc++-archx86_64-std=c++11-stdlib=libc++-MMD-MP-MF"src/main.d"-MT"src/main.d"-o"src/main.o""../src/main.cpp"链接器:clang++-L"TestSDL

c++ - 让 SDL_ttf 与 SDL2 配合使用

我最近开始从使用SDL(1.2.15)迁移到SDL2(2.0.0),之前依赖于使用扩展库SDL_ttf(2.0.11)来呈现字体。当我尝试使用与第一版SDL和SDL2(诚然尚未正式发布)相同的文本库时,它编译得很好。但是,当我运行可执行文件时(我目前使用的是桌面版VS2012),出现以下错误:Unhandledexceptionat0x6C7D8C24(SDL2.dll)intest.exe:0xC0000005:Accessviolationreadinglocation0x00000045.据我所知,这是由于以下代码造成的。我创建了一个Window类来封装一些常用的SDL函数:窗口

c++ - 使用 SDL_Renderer 绘制 2D 内容,使用 SDL_GLContext 绘制 OpenGL 内容

我学习SDL二维编程已有一段时间了,现在我想创建一个结合使用SDL和OpenGL的程序。我是这样设置的:SDL_Init(SDL_INIT_VIDEO);window=SDL_CreateWindow("SDLandOpenGL",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,width,height,SDL_WINDOW_OPENGL);context=SDL_GL_CreateContext(window);该程序目前只是一个使用OpenGl显示的带有白线的黑色窗口。这是渲染的代码:glClearColor(0,0,0,0);glCle

c++ - 如何使用 SDL2 Texture 作为更新 Canvas ?

我正尝试在SDL2中为嵌入式项目创建动态绘图仪。目前,代码在x86和ARM两种架构上执行。在x86上,我得到了一个运行平稳的绘图仪,但是,在ARM上,它运行得非常慢,只有我在x86上获得的帧的一小部分。我很确定这是因为我重新渲染了表面上的每个像素,因为这是嵌入式设备上的严重过热。我尝试将新内容渲染到纹理,将其复制到渲染器然后渲染,但这根本不起作用。由于双缓冲,我必须清除每一帧。否则,我将“放弃”更改。但我还需要渲染旧数据点,并且仅在绘图仪再次到达它们时覆盖它们。在SDL2中有没有一种方法可以将这些数据点保存到某种Canvas上,并且只添加(重绘)新添加的数据点?这是我的源代码:绘图仪.

c++ - SDL 表面像素格式转换

我想将由IMG_Load()加载的SDL_Surface转换为OpenGL纹理的其他像素格式(rgba8)。我怎样才能做到这一点?我在文档中读到了有关SDL_ConvertSurface()的信息,但我不知道如何将它组合在一起。 最佳答案 给"HowToLoadanOpenGLTexturefromanSDL_Surface"一个镜头:GLuinttexture;//ThisisahandletoourtextureobjectSDL_Surface*surface;//Thissurfacewilltellusthedetails

c++ - SDL TextInput(使用新的 1.3 结构)

好的,我一直在研究SDL中的文本输入(如何将击键数据转换为字母并将它们附加到名为Text的std::string中)并且大多数教程都是这样介绍的://Ifakeywaspressedif(event->type==SDL_KEYDOWN){//Ifthekeyisalowercaseletterelseif((event->key.keysym.unicode>=(Uint16)'a')&&(event->key.keysym.unicodekey.keysym.unicode;}}然而,经过一番搜索后,我在SDLheader中发现了一条注释,说明.unicode已弃用并使用SDL_T

c++ - SDL 退出全屏

当我退出全屏SDL应用程序时,我的计算机分辨率更改为640x480。我的应用程序分辨率是1024x768。如何在退出应用程序后将分辨率切换回原来的分辨率?我使用SDL1.2和Ubuntu10.04 最佳答案 这听起来像是X驱动程序问题或窗口管理器问题。您可以在不同的发行版或不同的ubuntu版本上尝试吗?除非您的程序崩溃,否则您应该调用SDL_Quit(),或SDL_QuitSubSystem(SDL_INIT_VIDEO),或者直接退出全屏。那应该恢复原始设置。 关于c++-SDL退出

c++ - SDL——跨平台开发

我打算在接下来的几个月里参加一个小型游戏比赛。他们要求提交的内容能够在Linux上编译(并且在为比赛运行/评估之前将会编译)。我将使用SDL和C++。我以前只在Windows上开发过,我已经非常习惯VisualStudio提供的好处。我希望能够使用VS在Windows中进行开发,然后在接近尾声的过程中将其迁移到Linux。除了确保SDL已安装在Linux机器上之外,我在整个开发过程中是否可以做一些事情来简化流程?此外,所有这些状态的竞赛规则:它还必须在开放平台上运行(我们强烈建议确保您的程序在现代风格的GNU/Linux上运行,因为所有评委都可以访问它)。我假设在Ubuntu中编译/运

c++ - 使用 SDL_ttf 和 OpenGL,TTF_RenderUTF8_Blended 打印红色矩形

当我使用TTF_RenderUTF8_Blended呈现我的文本时,我在屏幕上获得了一个实心矩形。颜色取决于我选择的那个,在我的例子中,矩形是红色的。我的问题我错过了什么?似乎我没有从使用SDL_DisplayFormatAlpha(TTF_RenderUTF8_Blended(...))生成的表面获得正确的Alpha值,还是我?有人认识或知道这个问题吗?附加信息如果我使用TTF_RenderUTF8_Solid或TTF_RenderUTF8_Shaded,文本会正确绘制,但当然不会混合。我还在屏幕上绘制其他纹理,所以我最后绘制文本以确保混合会考虑到当前表面。编辑:SDL_Colorg