Articles of sdl

C ++半透明窗口SDL

我希望有一个半透明的SDL背景(与子表面或图像无关),而不是具有黑色背景,实际上是透明的,但我绘制的其他东西却不是。 我目前的代码是Code :: Blocks的SDL项目的一个稍微修改的副本,类似于各种应用程序具有圆angular边界或除矩形以外的奇怪形状。 #ifdef __cplusplus #include <cstdlib> #else #include <stdlib.h> #endif #ifdef __APPLE__ #include <SDL/SDL.h> #else #include <SDL.h> #endif int main ( int argc, char** argv ) { putenv("SDL_VIDEO_WINDOW_POS"); putenv("SDL_VIDEO_CENTERED=1"); // initialize SDL video if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) { printf( "Unable to init SDL: %s\n", SDL_GetError() ); return 1; } […]

适用于Linux的SDL跨平台消息框

我正在开发一个跨平台的游戏引擎 – 这很好(我正在使用SDL)。 不过,我想要一个简单的方法来显示消息框给用户,而不必依靠SDL或OpenGL(渲染到屏幕)例如,如果窗口被销毁或尚未创build,所以我不能渲染消息屏幕? 我已经为每个平台实现了多个实现的消息框函数:Windows实现使用MessageBox,Mac OS X实现使用来自Cocoa的NSAlert,我不知道我可以用于Linux实现。 我在想X11,因为这是SDL用于在Linux上进行窗口化的东西。 我已经尝试了其他的答案,但他们要么太模糊,要么用X11或者其他东西重新调整我的整个游戏引擎。 我试图find一个独立于应用程序的解决scheme(如可以在控制台应用程序中使用的Windows MessageBox函数)。 注意:Mac和Windows实现的所有代码工作正常,这只是我需要帮助的Linux实现。 哦,当我在Mac OS XI上编译时,可以利用Objective-C ++,所以我可以将Cocoa(Objective-C)与我的C ++ msgbox()函数混合使用。 这是我迄今为止的Windows&Mac实现的代码: msgbox.h #ifndef MSGBOX_H #define MSGBOX_H //Cross-platform message box method. #include "platform.h" #include "string.h" //This is my own cross platform enum for message boxes. //This enumeration 'overlaps' with some declarations in windows.h but that is fine. enum […]

使用Qt Creator未定义对SDL_Init的引用

我试图用Qt Creator ( Qt 5.1.1 )构build以下基本的SDL2应用程序。 SDLTest.pro: TARGET = SDLTest01 CONFIG += console TEMPLATE = app INCLUDEPATH += C:\Users\Martin\code\libs\SDL2-2.0.1\x86_64-w64-mingw32\include LIBS += -LC:\Users\Martin\code\libs\SDL2-2.0.1\x86_64-w64-mingw32\lib -lSDL2 SOURCES += main.cpp main.cpp: #include <SDL2/SDL.h> #include <QCoreApplication> #undef main int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 ) return 1; return a.exec(); } 但是我有以下错误: […]

SDL2切换SDL_WINDOW_RESIZABLE状态为假全屏

要在没有模式集的情况下在SDL2中做一个“假的”全屏窗口,可以使用类似的东西来创build一个无边界的,最大化的窗口。 int idx = SDL_GetWindowDisplayIndex(g_displayWindow); SDL_Rect bounds; SDL_GetDisplayBounds(idx, &bounds); //SDL_SetWindowResizable(g_displayWindow, SDL_FALSE); SDL_SetWindowBordered(g_displayWindow, SDL_FALSE); SDL_SetWindowPosition(g_displayWindow, bounds.x, bounds.y); SDL_SetWindowSize(g_displayWindow, bounds.w, bounds.h); 对于不可resize的窗户,这个效果很好。 在使用SDL_WINDOW_RESIZABLE创build的窗口上,屏幕的底部和右侧边缘(窗口上)有一个恼人的灰色边框。 不幸的是,没有SDL_SetWindowResizable函数(从SDL 2.0.4开始)。 我们怎样才能摆脱resize的边界,而不重新创build窗口? SDL_WINDOW_FULLSCREEN_DESKTOP和SDL_WINDOW_FULLSCREEN都做了一个我想避免的模式集 – 它需要更长的时间,更难以退出,如果游戏在debugging器中遇到了断点,它可能会locking整个系统。

在Windows上使用Clang链接SDL2时出错“LNK1561:必须定义入口点”

我正尝试在Windows上使用clang来编译和链接SDL2应用程序。 这样做的原因是尝试使我的开发环境与其他使用XCode的OSX(使用clang编译)的团队成员保持一致。 由于Visual C ++编译器比clang编译器严格得多,所以我可能会提交在clang下不能编译的更改。 我宁愿不必安装VS 2015来使用实验LLVM构build环境:(链接已移除) 我已经在windows上安装了LLVM / clang工具(不是从source构build的,只是从这里下载的二进制文件:(链接被删除)),并且可以使用clang成功构build和运行“hello world”控制台应用程序。 我想要做的是有一个batch file,允许我定期build立和连接叮当,以确保我的代码将是安全的提交。 当连接一个简单的单个文件SDL2应用程序时,我收到以下链接器错误: LINK : fatal error LNK1561: entry point must be defined clang++.exe: error: linker command failed with exit code 1561 (use -v to see invocation) 这个线程build议设置链接器子系统SDL2:LNK1561:入口点必须被定义,虽然我不确定如何从命令行编译时如何做到这一点。 据我所知,默认情况下应该是没有指定的CONSOLE。 我的主要入口函数是按照这个线程的formsint main(int argc,char * argv []): 为什么SDL定义了主macros? 这里是我使用的bat文件: CALL "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat" […]

C ++为Windows创build一个屏幕保护程序

我用C ++创build了一个使用OpenGL和SDL的animation(它不使用Windows库),并希望将其用作Windows系统的屏幕保护程序。 我读了一个例子:它描述了你只需要将.exe扩展名改为.scr 。 我已经做到了,并且将animation作为一个屏幕保护程序来运行,但是我注意到animation运行并不顺利。 就好像应用程序性能有所损失一样。 我制作的应用程序创buildanimation,将其设置为全屏,隐藏光标并处理所有键盘input。 我如何使我的应用程序作为一个屏幕保护程序顺利运行?

改变当前的工作目录VS13?

正如本文所述,当我debugging我的SDL程序的工作目录是相对于.vcproj而不是.exe(它应该是IMO) 所以我想知道如果有反正我可以改变这一点,所以当我按F5path将相对于.exe而不是.vcproj? 目前(相对容易)的解决方法,我只是打开文件夹,并从那里启动程序,但我宁愿只是按F5。

在VC ++ 2008 Express上编译器问题,看似正确的代码会引发错误

我一直试图回到编码一段时间,所以我想我会开始一些简单的SDL,现在,没有文件I / O,这编译好,但是当我扔在stdio代码,它开始抛出错误。 这个我不确定,但是我没有看到代码本身存在任何问题,但是,就像我说的那样,我可能是一个新手,并且认为我会来这里找一个有更多经验的人这种types的东西来看待它。 我想我的问题归结为:“为什么不在Microsoft的Visual C ++ 2008 Express下编译?” 我在代码片段的底部附加了错误日志。 在此先感谢您的帮助。 #include "SDL/SDL.h" #include "stdio.h" int main(int argc, char *argv[]) { FILE *stderr; FILE *stdout; stderr = fopen("stderr", "wb"); stdout = fopen("stdout", "wb"); SDL_Init(SDL_INIT_EVERYTHING); fprintf(stdout, "SDL INITIALIZED SUCCESSFULLY\n"); SDL_Quit(); fprintf(stderr, "SDL QUIT.\n"); fclose(stderr); fclose(stdout); return 0; } 报告的实际错误: main.cpp(6) : error C2090: function returns array […]

在Windows操作系统上将SDL与FreePascal(使用Lazarus)链接

好吧,对于我正在开发的游戏,我的程序员已经决定将FreePascal与SDL一起使用,并向我展示了它的工作原理(虽然他使用的是Linux操作系统,而我不是)。 我已经尝试了将SDL2.dll和附带的头文件链接到Lazarus项目的多种方法,但是他们都没有工作。 以下是我迄今为止所尝试的: 将.dlls添加到我正在使用的项目的项目文件夹中 将.dlls添加到我的操作系统中的FPC“单元”文件夹中 在项目选项窗口中添加.dllspath 直接在fpc.cfg文件中添加.dlls文件夹: searchpath的库 -FLC:\拉撒路\ FPC \ $ FPCVERSION / lib目录 -FL / lib中; / usr / lib中 -FLC:\拉撒路\ FPC \ $ FPCVERSION / lib中/ $ FPCTARGET -FLC:\拉撒路\ FPC \ $ FPCVERSION / lib中/ $ FPCTARGET / SDL2 searchpath的工具 -FDC:\拉撒路\ FPC \ $ FPCVERSION /斌/ $ FPCTARGET 所以我也有他们在使用位置: 使用 {$ IFDEF […]

SDL和windows中的haskell问题

我之前问过在Haskell中使用什么库来编写游戏,并且得到了相当不错的答案,让我朝着正确的方向前进。 但我似乎无法解决与sdl绑定有关的问题。 我一直在关注这个教程在windows (安装部分) haskell冒险做一个简单的示例工程 。 问题出现在我尝试运行示例时,运行ghci myExample.hs时,从控制台不断收到此错误消息: Loading package SDL-0.6.2 … <interactive>: SDLmain: Cannot find specified module . Can't load .so/.DLL for: SDLmain (addDLL: could not load DLL) 我看了很多网页和解决scheme或一些帮助似乎并没有出现。 有没有这种情况呢?