sdl

如何在 Qt Creator 下链接到 SDL2 库

我已经编译了从“官方”mercurial 存储库获得的最新 SDL2 库,并按照 Ubuntu/Linux 构建的说明进行操作。 但是 Qt 创建者无法链接静态构建的库。这是 qmake 脚本: TEMPLATE = app CONFIG += console CONFIG -= app_bundle CONFIG -= qt unix:!macx: LIBS += -L/usr/local... »

c++

OpenGL 不绘制到 SDL2 窗口

所以我正在用 C++ 制作游戏,我正在使用 SDL2 和 OpenGL/GLEW。我试图只在我的窗口上绘制基本形状,但是,当它应该绘制一个三角形时,它只是创建了一个黑屏。这是代码。 游戏循环: int main(int argc, char** argv) { Window window("Test", 600, 400); RenderingEngine e(window)... »

c++

无法读取键盘输入 (SDL_GetKeyState)

我想使用 SDL 来检查是否按下了某个键。 我不工作。也尝试使用事件,但没有触发 SDL_KEYDOWN 事件。 Visual C++ 2010 速成版,Windows7。 也许我设置了 SDL 或项目错误?我怎么会知道? SDL_PumpEvents(); Uint8 *keys = SDL_GetKeyState(NULL); if (keys[SDLK_RIGHT]) { ... »

在 SDL 中限制和计算 FPS?

我已经编写了这段代码来将 SDL 游戏的速度限制为 60 fps,这是实现 fps 计数的正确方法吗? int fps=60; int desiredDelta=1000/fps; //desired time b/w frames while (gameRunning) { int starttick=SDL_GetTicks(); // Get our control... »

c++

将 SDL_Surface 转换为 IplImage

我将 IplImage 转换为 SDL_Surface 参考这个link SDL_Surface *single_channel_ipl_to_surface (IplImage *opencvimg) { SDL_Surface *surface = SDL_CreateRGBSurfaceFrom((void*)opencvimg->imageData, ... »

在游戏中移动敌人的简单问题(C / SDL)

我正在尝试一个简单的游戏来自学 C,但我遇到了一个非常简单的问题,我无法在 Google 上找到答案。 代码如下,为它的菜鸟可怕道歉(感谢批评!): #include <stdio.h> #include <stdlib.h> #include <SDL/SDL.h> #define AMOUNT_OF_ENEMIES 10 #define AMOUNT_... »

c

SDL 访问冲突写入位置 0x02a251c8

我已经阅读了我能找到的所有访问冲突写入位置问题,也许我遗漏了一些东西,但我似乎遇到了不同的错误。我已经初始化了所有指针(据我所知)。 void putpixel( SDL_Surface* surface, int x, int y, Uint32 pixel ) { int k = GetWidth(surface); //Convert the pixels to 32 b... »

libpng 警告:iCCP:已知不正确的 sRGB 配置文件

我正在尝试使用 SDL 加载 PNG 图像,但程序无法运行,并且此错误出现在控制台中 libpng 警告:iCCP:已知不正确的 sRGB 配置文件 为什么会出现此警告?我应该怎么做才能解决这个问题? ... »

c++

SDL/C++ 运动:时间和加速度

我想通过使用 SDL 2 创建一个简单的 2d 平台游戏来自学一些基本的物理编程。不过,我似乎遇到了第一个障碍,因为我无法同时使用单位时间的速度和加速度来移动,而不是每帧,工作。 我首先以通常的方式计算每帧的时间: previous_time = current_time; current_time = SDL_GetTicks(); delta_time = current_time - pre... »

c++

神秘的 OpenGL/SDL 内存增长

这是我使用 C++ 开发的第一个“游戏”,将 OpenGL 用于图形,将 SDL 用于应用程序。我的代码似乎可以工作,因为我能够创建一个功能性应用程序窗口并使用 Devil Texture 库完全加载和绘制纹理。问题出现在运行时。根据 Windows 任务管理器,我的内存使用量从 13,900 左右开始,但在 4 分钟左右后稳步增长到 15,000 左右,然后停止。这是正常的吗? Windows ... »

如何使用 SDL 在两个单独的声卡上播放声音?

我的机器上有两个声卡,我正在开发一个通过 SDL_mixer 播放声音的应用程序。我希望在第一张牌上播放其中一些声音,而在其他牌上播放一些声音。如何在 Windows 中实现这一点? 它甚至不必是单个实例。我有两个在 Linux 中运行不同环境(AUDIODEV)的实例,它对我来说很好。... »

c++

SDL_image 的 IMG_Load 不起作用

我正在使用 IMG_Load() 加载 png 文件,但它根本不起作用。 加载图像 = IMG_Load(filename.c_str());在这句话之后,loadedImage 仍然是 NULL,没有发生错误。 PS:我使用的是VS C++2008,png文件在develop文件夹中。这是我的代码:(这正是 Lazy Foo 喜欢的) //The headers #include "SDL.h... »

单例类中的初始化列表

我决定重写我的代码并将所有原始指针替换为智能指针或引用之类的想法。但是,我对我的一些类(游戏、实体管理器、输入...)使用单例模式并且不知道如何初始化智能指针。问题是我使用SDL,我需要设置智能指针的删除器 std::unique_ptr<SDL_Window> window_(SDL_CreateWindow(...), SDL_DestroyWindow); 我通常会这样做,... »

c++

SDL 图像渲染困难

嗨,溢出者们! 我最近开始学习 SDL。我选择简单的直接媒体层作为我的 C++ 知识的外部 API,因为我发现它为游戏开发提供了视觉上最增强的机制。考虑下面的代码: #include <iostream> #include "SDL/SDL.h" using std::cerr; using std::endl; int main(int argc, char* args[]) ... »

c++

带有 OpenGL ES 2.0 的 SDL2 - 无法在 iOS 上绘制简单的三角形

我正在使用 SDL2 测试 OpenGL ES 2.0,但由于某种原因,我无法在屏幕上绘制任何内容。我正确配置了我的着色器,它正确编译并由顶点属性绑定,但仍然没有。如果我为 MacOSX 或 Windows 编译应用程序,三角形会绘制。 这是我的着色器: [顶点着色器] attribute vec3 vPosition; void main() { gl_Position = ve... »

c++

游戏手柄热插拔不起作用

在 OS X 中,我的游戏手柄在应用程序启动时在 SDL_PollEvent() 中被正确识别。但是,当我尝试热插拔新游戏手柄或移除旧游戏手柄时,SDL_PollEvent() 不会触发SDL_CONTROLLERDEVICEADDED 或SDL_CONTROLLERDEVICEREMOVED。当我热插拔游戏控制器时,相同的代码在 Windows 中也能正常工作。 更有趣的一点是,如果我调整应用... »

SDL2 全屏和渲染到纹理

我正在使用一个名为 UICanvas 的类,该类有一个纹理供子对象用于渲染。 我使用 SDL_SetRenderTarget 来实现这一点,并且效果很好,但是当我切换到全屏时,由于某种原因,整个屏幕都使用画布纹理作为屏幕纹理。 这是一个错误,还是我做错了什么? 这是画布类的绘制函数,m_canvas 是用于子对象绘制的纹理。 void UICanvas::draw( SDL_Renderer... »

c++

SDL + SDL_ttf:透明混合文本?

我想在具有给定 Alpha 通道的 SDL_Surface 上呈现抗锯齿字符串。 我发现可以渲染: 具有字符串渲染方法的Blended 变体的抗锯齿字符串(即:TTR_RenderText_Blended)。但是我不能让它透明。 使用Shaded 方法的抗锯齿字符串。但是有一个坚实的背景。背景和绘制的字符串可以设为透明,但纯色背景仍然存在。也不可能给它传递一个透明的背景颜色。 一个非抗锯齿字... »

c++

调整 Makefile 以包含 SDL2

我正在编译一个使用 SDL2 库的简单程序。 MWE(Lazy Foo's tutorial 的简化版): // main.cpp #include <SDL.h> int main(int argc, char* args[]) { SDL_Window* window = NULL; SDL_Surface* screenSurface = NULL; SDL_Ini... »

c++