MonoGame应用程序说缺少SDL.dll,尽管它就在那里。为什么?
我有一个使用Linux游戏模板在Visual Studio中构建的单体应用程序.它使用.NET或MONO在Windows上运行,但在Linux上失败. 错误是关于sdl.dll的A DllNotFoundException,但是sdl.dll始终在二进制目录中.该文件不是CLR组件,因此不在引用中.取而代之的是,我将其复制在MonoGame的组件/Linux目录中(以及所有相关的CLR组件也从该文件夹复制).无论我是在Visual Studio还是Xamarin Studio还是Monodevelops中的Linux下方的Windows构建项目,无论我是在Windows下构建了该项目.没有构建错误. 这是相关的堆栈跟踪: System.DllNotFoundException: SDL.dll at (wrapper managed-to-native) Tao.Sdl.Sdl:__SDL_InitSubSystem (int) at Tao.Sdl.Sdl.S
4 2024-04-21
编程技术问答社区
有可能用C/SDL编写塔防吗?
我必须使用SDL库在ANSI C中编写塔式防御游戏,但是我越深入Lazyfoo的教程,由于限制,我越无法在纯C中写下这种感觉.所以我的问题是 - 我遇到了很大的麻烦,还是我只是惊慌失措.它必须是一个简单的塔防御游戏,没有什么花哨的,但是只能仅使用C? 进行操作 解决方案 c是一种图灵完整的语言,因此您可以在C中可以做任何其他语言. SDL为您提供了通常用于(通常为小/独立)游戏的图形API. 当然,写它可能会更愉快.在C ++或更高级别的语言中,例如C#或Python,但在C中仍然可以. tl; dr:是的,这是完全可能的.
6 2024-04-10
编程技术问答社区
OS X El Capitan上的SDL_image视觉故障
尝试使用c或python中的pygame加载和显示位图(都使用sdl)时,它会引起小故障(请参阅下面的屏幕截图). 我尝试搜索它,发现它可能与SDL_IMAGE与OS X El Capitan不兼容有关,但没有解决方案.有人吗? 目前,我尝试了: 安装SDL_IMAGE 1.2.10(最新兼容版本). nope! 通过自定义公式安装SDL_IMAGE 1.2.10. 也没有! 在屏幕截图上,这些随机像素应为三个红色砖头图.顺便说一句,我正在使用这些功能加载和绘制位图: tileset[0] = al_load_bitmap("./data/gfx/bricks.png"); al_draw_bitmap(tileset[0], pos_x, pos_y, 0); 解决方案 该错误实际上是在El Capitan下使用的SDL_IMAGE.通过将sdl_image降低到1.2.10( sdl),可以解决解决方法.您可能已经安装了SDL 1.2.10,但仍
6 2024-04-10
编程技术问答社区
C语言对链表内容的调用函数
我正在使用GLIB来管理链接列表.我宣布2个结构,将它们放在链接列表中,如下所示. Asteroid asteroid = {0,0,50,50,50} Asteroid asteroids = {0,0,200,200,50}; GList *asteroidList = NULL; asteroidList = g_list_append(asteroidList, &asteroid); asteroidList = g_list_append(asteroidList, &asteroids); 然后,我使用以下函数来遍历将struct绘制到屏幕为圆的列表和卡拉函数,如下所示 void drawAsteroids(){ GList *list = asteroidList; while(list != NULL){ printf("Asteroids"); GList *next = list->next; drawAsteroid(li
12 2024-04-10
编程技术问答社区
C SDL 键盘事件 SDL_KEYUP 键盘向下时触发的事件
我在C中使用SDL,并且我正在尝试在按键时在屏幕上移动角色,并在发布时停止,但似乎键盘事件在键是触发时触发仍然被压倒.如果我删除按()中的键入部分,则字符将在屏幕上滑动,但显然不会自行停止.如果我将键入部分留在其中,则必须重复按键以将其移动到屏幕上. 知道我做错了什么? 这就是我所拥有的: ... int done = 0; while (done==0) { pressed(); if (kenter == 1) { state = 1; subscreen(); } if (kescape == 1) { done = 1; } if (kup == 1) { playery += -2; } if (kdown == 1) { playery += 2; } if (krigh
16 2024-04-09
编程技术问答社区
GCC/SDL2无限期挂起并停止响应
嗨,我已经在这个问题上呆了几天,找不到答案. 成功构建了SDL2后,我的项目悬挂而不要响应.他们不接受输入并无限期地挂起,除非我使用命令提示符窗口关闭它们.甚至应用程序窗口上的" X"也没有响应.据我所知,这个问题似乎与窗口本身有关,因为程序可以吸引渲染器.请帮助. 我正在使用Windows 7,Mingw32,Eclipse Europa和SDL2 请参见下面的问题.... 内部构建器用于构建 gcc -o0 -g3 -wall -c -c -fmessage -length = 0 -osrc \ ctestproject.o .. \ src \ ctestproject.c gcc -octestproject.exe src \ ctestproject.o -lmingw32 -lsdl2main -lsdl2 为项目ctestproject构建完整 时间消耗:562 ms. 这是示例程序 #include
10 2024-04-09
编程技术问答社区
SDL2无法正确看到X11/视频设备
(我知道有关该主题的文档很多,但是我太没有经验来找到有效的文档,或者我有与记录的问题不同的问题) 我正在尝试加载一个简单的SDL包装器,该包装器在Linux上(Lubuntu 20.04,LXQT 0.14.1)上写了一个简单的SDL包装器.但是,当调用SDL_Init(SDL_INIT_VIDEO)时,生成以下SDL_Error()返回语句:No available video device.我已经验证了我的DISPLAY envvar设置为:0(根据xterm是正确的),而我的SDL_VIDEODRIVER是未设置的. 将我的SDL_VIDEODRIVER设置为x11,触发了x11 not available的替代错误. 我很难过,我从中得出的唯一可能的结论是,我不使用x11或犯错了. 这是一个触发此错误的最小示例: #include int main() { SDL_Init(SDL_INIT_VIDEO);
8 2024-04-09
编程技术问答社区
在初始化 SDL2 时出现分段故障。我在内存方面做错了什么?
这只是假设向SDL窗口前缓冲区显示BMP图像.我玩了代码.我认为我的init()函数有问题.我是SDL的新手.但是我的指示器或我对SDL的fucntions一定有问题 编辑:我使用了GDB,事实证明我的关闭()函数是问题所在.我相信这是因为我正在释放设置为空的记忆?我摆脱了近距离的兴趣,在延迟功能之后刚刚释放了MEM. #include #include #include #define SCREENWIDTH 640 #define SCREENHEIGHT 480 SDL_Window *win = NULL; SDL_Surface *scrn = NULL; SDL_Surface *mscrn = NULL; bool init() { bool suc = true; char name[11] = "Hello SDL"; if (SDL_Init(SDL_INIT_VIDEO)
6 2024-04-09
编程技术问答社区
使用GCC编译SDL项目?
如何在不使用CMAKE的Linux命令行中使用GCC编译SDL项目? 编辑; gcc SDLGAME.c pkg-config --cflags --libs sdl2 但是我有错误. gcc: error: Pkg-config: No such file or directory gcc: error: sdl2: No such file or directory gcc: error: unrecognized command line option ‘--cflags’ gcc: error: unrecognized command line option ‘--libs’; did you mean ‘--libs=’? @holyblackcat 源代码--- >> #include #include int main(int argc,char *argv[]) { if
18 2024-04-09
编程技术问答社区
无效的渲染器 SDL2
我正在查看代码,我找不到解决无效渲染器问题的解决方案.我是SDL2的初学者,我必须在PureC中编写代码. 我认为在我的代码中,有更多的错误,但是由于这个错误,我无法走得更远.代码是波兰语言的一半,因此,如果您无法得到我可以重写的内容.当我尝试加载功能" odczyt_z_pliku"时,出现问题.可能存在问题. sdl_geterror()说"无效的渲染器. #include #include #include #pragma warning(disable : 4996) #define WYSOKOSC_EKRANU 768 #define SZEROKOSC_EKRANU 1024 typedef enum bool{ false,true }bool;
8 2024-04-09
编程技术问答社区
SDL\u GetKeyboardState不工作
我正在尝试使用SDL 2制作一个游戏控制器(不想直接在Gamedev上询问),我使用SDL_GetKeyBoardEvent来查看是否按下导航箭头't工作,如果按下这些键之一,它应该打印一个值1或-1钥匙正在按下.我在互联网上进行了搜索,这就是他们的做法,但对我不起作用. #define SDL_MAIN_HANDLED #include #include "SDL.h" /* I'll add some code later so something that isn't used might be initialized */ int main (void) { int a = 1; int x; int z; SDL_Event quit; const Uint8 *keys = SDL_GetKeyboardState(NULL); SDL_Init(SDL_INIT_VIDEO); whil
12 2024-04-09
编程技术问答社区
SDL程序中的颜色是关闭的
我目前正在使用SDL(及其官方的额外库,例如SDL_IMAGE)和OpenGL进行非常简单的游戏.现在,尽管我遇到了一个绊脚石,但我不知道为什么这样做:绘制时的颜色都会不变.我目前正在Mac上运行该程序,但是如果我在Windows中运行颜色时是否正确记住了它,那么仍然有一些奇怪的事情发生(例如,纯白色多边形图形为黄色). 当前在我的Mac上,所有已加载的图像都加载了PNG文件的颜色,并将其纯白色多边形绘制为深绿色.还有一些图像被绘制为纯白色.如果我在窗户上记得正确,则图像正确绘制,但白色多边形是黄色的,如前所述.现在,我将发布相关的代码以进行初始化和加载等. int main( int argc, char *argv[] ) { //initializing various OpenGL attributes with SDL utilities SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); SDL_GL_SetA
12 2024-04-09
编程技术问答社区
在OS X上加载曲面时,SDL2预先乘以alpha通道?
我正在加载32位rgba normalmap纹理,并在Alpha通道中编码高度图,通过SDL2 2.0.7和OS X Sierra上的SDL2 2.0.7和SDL2_IMAGE 2.0.2. 这些纹理中的每个像素都有非零的RGB值,编码了方向性正常向量. (0,0,0)(即 black )的定向向量无效. 但是,当我通过sdl2_image加载这样的纹理时,纹理的区域的alpha值为0 也也收益.这些像素的值? 附件是这些普通示范纹理之一.您可以通过打开例如gimp并在其中一个透明区域上使用彩色拾取器.您会发现,确实,透明区域仍然具有蓝色的RGB颜色(编码的正常向量). 及以下是一个最小的测试案例,说明了附带的PNG文件的问题: #include #include int main(int argc, char **argv) { SDL_Surface *s = IMG_Load("green3
6 2024-04-08
编程技术问答社区
为什么使用 "mingw32 "链接可以解决 SDL2 的编译问题?
我正在学习使用sdl2和c在Windows和mingw上的C. 的SDL2. 我尝试了以下命令来编译我的程序: gcc -IC:C:/msys64_new/mingw64/include/SDL2 *.c -o game.exe -g -Wall -Wno-unused -LC:/msys64_new/mingw64/lib -lSDL2main -lSDL2 它给出了错误:Undefined reference to WinMain 然后我读到我应该将-lmingw32添加到命令: gcc -IC:C:/msys64_new/mingw64/include/SDL2 *.c -o game.exe -g -Wall -Wno-unused -LC:/msys64_new/mingw64/lib -lmingw32 -lSDL2main -lSDL2 现在它有效!我的问题是: 为什么这能解决问题?与libmingw32.a链接的方法是什么? gc
4 2024-04-08
编程技术问答社区
在同一个程序中结合SDL窗口和GTK+窗口
我正在创建和SDL程序,其中一些功能打开了GTK+ Windows.主窗口是一个SDL窗口,GTK+窗口主要是对话框. main()函数正常打开SDL窗口,并具有带有SDL事件的while循环,例如通常在SDL中.一些SDL事件调用函数通常打开GTK+ Windows(例如GTK+ Windows),并且具有与GTK+程序中main()具有相同的结构. 所有窗口都按照应有的打开,问题是要关闭GTK+ Windows.当我关闭GTK+窗口时,它一直打开,直到关闭主SDL窗口.当我关闭GTK+窗口时,唯一发生的事情是它在关闭后不会做任何其他事情,因此,例如,如果我最小化它,然后再次将其最大化,它将变为空.当我关闭它时,SDL窗口也对事件的反应,就像GTK+窗口不存在一样.因此,一切都好像GTK+窗口已关闭,只是仍然可见.我在每个函数中都有一个打开GTK+窗口的行,所以这不是问题. 当我单击GTK+窗口中的关闭按钮时,GTK+窗口如何关闭,而不是SDL窗口? ? 这是代码的
12 2024-04-08
编程技术问答社区
如何在 SDL 中创建颜色渐变
sdl没有这样的功能,好奇过去的任何人都做过它,并且不介意将我朝着正确的方向前进.我想在矩形的高度上创建两种颜色之间的梯度. 解决方案 只需在所需的Y位置上循环: 通过在梯度的端点颜色之间插值来计算所需的颜色. 呼叫 SDL_SetRenderDrawColor() 设置颜色. 调用 SDL_RenderDrawLine() 在当前y位置绘制水平线. 其他解决方案 我昨天实际上是在思考这个问题,我有一个有趣的主意.如果将渲染器缩放设置为线性,则可以将几个像素的纹理缩放到所需的任何尺寸上,并在颜色之间获得平滑的插值 - 本质上,硬件加速的纹理过滤可以为您提供渐变,而无需抬起CPU手指回复:计算它们. 我对此进行了测试,并能够在每个角落创建一个带有不同颜色的任意矩形,并且仅使用四像素纹理在两者之间平滑混合.我遇到的唯一陷入困境的是,在我的Windows机器上,纹理插值在边缘沿灰色融合并开始了一些颜色部分.幸运的是,将源纹理从2x2图像扩展到4x4,然后从中心2
8 2024-04-08
编程技术问答社区
如果我只在其他线程中需要一个变量的值,我是否应该在一个线程中锁定它,如果不锁定,为什么会有效果?
我知道这个问题,但我相信我的担忧是非常不同的. 我最近使用螺纹和OpenGL创建了一个SDL应用程序.我有一个在循环中运行的线程,该线程不断更新我绘制到屏幕的对象的状态.状态非常简单,它只是一个布尔数组(当数组值为真时,我绘制它,当它是错误的,我不). 目前,我的任何变量都没有静音锁,一切正常.即使在抽奖之间只有一半的状态阵列被更新,帧率也要高得多(或至少等于)更新率,因此可以接受半上升的状态. 现在,我最初开始使用中断在嵌入式系统上进行类似的想法.每隔一段时间,中断会触发,更新状态数组,并且执行将继续.现在我在多核桌面上,同时更新阵列,我想知道为什么什么都没有发生,因为我从技术上讲和写作是同时读取并写入相同的内存位置. 是仅仅是偶然的,还是有原因没有发生记忆访问的原因? 如果变量的状态可以在使用该值之前,之中或之后更改的状态,我是否应该使用Mutex锁定? 谢谢您的帮助. 编辑:附加信息 - 数组是动态创建的,但是当创建/删除它时,我确实使用了一个
10 2024-04-08
编程技术问答社区
最大化SDL窗口
我应该如何告诉SDL最大化应用程序窗口? 我正在用这些标志创建窗口:sdl_opengl | sdl_hwsurface | sdl_doublebuf | sdl_resizable. 解决方案 当您使用SDL_Resizable标志时,此功能由窗口管理器控制.要模拟使用SDL最大化的窗口,您需要首先确定最大化时窗口将占据的尺寸.然后,您将调用如果您确实需要窗口才能最大化,就好像您已经单击了"最大化"按钮,则必须直接访问基础窗口管理器(即SDL不会帮助您). 例如,SDL_SysWMinfo info; SDL_VERSION(&info.version); SDL_GetWMInfo(&info); ShowWindow(info.window, SW_MAXIMIZE); 其他解决方案 所有答案似乎已经过时了,如今只是指定SDL_WINDOW_MAXIMIZED作为SDL_CreateWindow的标志. window = SDL_CreateWi
16 2024-04-08
编程技术问答社区
如何在 SDL 中绘制圆、弧和矢量图形?
我正在使用sdl2. 我可以找到绘制形状的唯一方法是与行,rect和像素函数一起使用,如在这里. 除了使用Trig或"圆的方程式"之外,我该如何绘制曲线?通用矢量图形怎么样? SDL是一个合适的起点,还是我应该在其他地方看? 解决方案 如果要编写自己的圆形绘图功能,我建议您适应中点算法通过绘制像素. 曲线将类似地完成,但会使用更多的椭圆形绘制算法. 实际的矢量图形开始变得更加复杂,您可能必须找到一些呈现SVG文件的东西,我不确定SDL2是否有很多选择. 但是,如果您宁愿拥有可以使用的功能,建议您直接去 sdl2_gfx .它已经实现了更多的功能供您使用. 其他解决方案 这是上述中点圆算法的一个示例.它不需要数学库,而且非常快. (在大约500微秒中渲染)这是Windows使用/用于栅格化圆圈的用途. void DrawCircle(SDL_Renderer * renderer, int32_t centreX, int32_t
16 2024-04-07
编程技术问答社区
学习C语言中的SDL
我知道C的基础知识,并且正在研究SDL.目前,我需要一些教程,文档或有关使用C中的SDL库的书,尤其是关于图形. 问题在于我发现的每个在线资源都与C ++交易,我在这里寻找c. 中的资源 我已经看了gpwiki.org,它在C上有整个部分,但Mingw不会编译它,因为其中一些是C ++库(我只安装了C编译器).其他来源诸如sol.gfxile.net/gp/说它们是C教程,但"使用C ++方便地放宽可变放置规则.". SDL站点上的大多数教程本身都基于C ++. 有人知道C用于SDL编程的C中有很好的学习资源吗? 解决方案 请看一下这个教程系列平行现实.它用c. 覆盖SDL
6 2024-04-07
编程技术问答社区