问题标签 [sdl-image]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
347 浏览

c - SDL 窗口关闭,因为 SDL_Flip 具有图像表面阵列

我正处于破砖游戏的开始阶段,但我陷入了困境SDL_Flip。我的 CodeBlocks 编译器什么也没说,控制台也没有崩溃,但是 SDL 窗口关闭并且控制台进程返回了代码 3。当我运行调试器时,它说:

并且说显示类型错误位于我的行SDL_Flip(screen);

这是我的代码的一瞥。MyBrick_CoordinatesBrick_Surfacestruct 已经被之前的另一个函数初始化(我的坐标Brick_Coordinates和 NULL ):Brick_Surface

我的结构如下所示:

在我的主要,我的代码是这样的:

我已经用fprintf初始化的坐标值进行了测试。这些都很好。显然我SDL_Blit的工作。但翻转不是。我的屏幕表面足够大,可以容纳我的所有图像(480x540,我的图像是 40x20)。我想知道这个问题是否与无法Blit将图像放在另一个图像之上Flip但当我只尝试一个图像(没有我的循环)时甚至不起作用。有人可以告诉我我的问题在哪里吗?提前致谢

0 投票
1 回答
1270 浏览

c++ - ld:找不到框架 SDL2_image

我想使用 SDL2_image frameworks (SDL2 框架的扩展),我已经下载并复制了SDL2_image frameworks 以下文件夹:

/库/框架/

/系统/库/框架

/Users/ <用户> /Library/Frameworks

我的代码适用于 SDL2 框架,但是当我添加 SDL2_image 框架时,我收到如下错误:

我尝试清除我的框架搜索路径,尝试更改我的有效架构部分,但它们都没有奏效。

0 投票
1 回答
995 浏览

c++ - IMG_Load 问题(不支持的图像格式)

操作系统 Ubuntu;IDE 代码块 我用“加载”功能编写了自己的纹理管理器类

它写“图像加载错误:不支持的图像格式”

但我包括了所有 SDL_image 要求:

并且没有这个纹理加载器 IMG_load() 可以正常工作。那是什么?我该如何修理它?

0 投票
0 回答
265 浏览

c++ - 尝试加载纹理时 SDL_Image 返回 NULL

我已将模型加载到我的屏幕上,但无法读取它的纹理。每当我尝试加载模型的纹理时,它都会返回 NULL。模型和纹理位于同一目录中,我无法弄清楚程序出现问题的原因。程序运行时,我收到的错误IMG_GetError()是:

无法打开(位置)/image.jpg

这是它的加载方式:

}

我的 DLL 是libjpeg-9、libpng16-16、libtiff 和 libwebp-4。

0 投票
1 回答
8677 浏览

c++ - 无法使用 IMG_Load() 加载图像

我的 SDL_image 库有问题。我写了一个简单的程序加载一个精灵表并在左键单击时对其进行动画处理。这是代码:

问题是当我尝试运行它时,IMG_Load() 返回 NULL 指针并且 IMG_GetError() 说“不支持的文件格式”。spritesheet 是一个 .png 文件,但 .jpg spritesheet 也是如此。我敢肯定,代码是正确的,因为它可以在具有完全相同图像文件的其他设备上运行,就像魅力一样。我试过重新安装 SDL 和 SDL_image,但它不起作用。SDL_RWops 和 IMG_LoadPNG_RW 也无济于事。我在 64 位 Linux Mint 上使用 Eclipse Kepler SR2(但我也尝试使用 Code::Blocks 12.11 运行它,结果相同)。

我将不胜感激任何帮助,谢谢!

0 投票
1 回答
3422 浏览

graphics - SDL: How to blit a surface onto one created with SDL_CreateRGBSurface correctly?

I'm trying to blit a surface created by IMG_Load (SDL_image) onto one created via SDL_CreateRGBSurface. When both surfaces are loaded with IMG_Load, this works fine, but not when the target surface was created using SDL_CreateRGBSurface.

By experimentation, I figured out that if I call SDL_SetAlpha on the source surface, it suddenly works fine. The documentation is a bit lacking, but how I understand it, the way I call it below should clear the SDL_SRCALPHA flag, presumably set by IMG_Load. It seems like the alpha flag of the source surface is what matters when blitting, so I guess this turns off alpha blending altogether.

The big question is: Why is this SDL_SetAlpha necessary in the first place? And is this really the right way to do it?

Here's code that reproduces this:

You'll need source.png. I'm using a 400x400 transparent PNG with some black scribbling.

0 投票
5 回答
63477 浏览

c++ - How to use SDL2 and SDL_image with cmake

I'm looking for the simplest way to compile a c++ program using SDL2 and SDL_image with cmake.

Here is my best attempt, after hours of searching:

CMakeLists.txt

I get these errors:

Here is the function call:

I am desperate. Please help me! Thanks! :)

0 投票
0 回答
394 浏览

c++ - 使用 SDL 读取 16x16 图像的像素值

我使用 SDL_image 将图像加载到SDL_Surface. 我怎样才能将所有这些数据放入一个vector <int> pixels

我努力了:

我想知道为什么我会得到奇怪的结果......我得到一个 3x3 图像,中间有一个黑色像素:

0 投票
1 回答
247 浏览

c++ - 从图像中获取不正确的读数

我制作了一个 3x3 的图像,所有正方形都是黑色 (0,0,0),除非角落......我有一个红色、绿色、蓝色和白色像素,如下图所示:

如果我理解正确,它应该放在R, 0, G, 0, 0, 0, B, 0, W像素数据数组中。我遇到的问题是打印出来的是:

这是我的代码:

编辑:我的预期:

0 投票
1 回答
627 浏览

c++ - SDL2 / SDL 图像奇怪的 PNG 行为与 RGB 值

我发现了一个我无法调试但我想解决的有趣的事情,因为它对于开发我需要的小工具至关重要。

基本上所有都归结为我加载到一个SDL_Surface加载了IMG_Load("filename.png"). 代码的骨架是

然后这个工具应该通过应用颜色图(这只是一个)将这个表面逐个像素地复制到另一个表面unordered_map<u32,u32>。这基本上是可行的,但是许多像素的 RGB 值略有变化,因此这种替换失败了。

例如,当像素 255,255,255 正确存储为表面中的 0xFFFFFFFF 时,另一个像素,例如 81,60,48 变为 82,62,51。我考虑过伽玛校正,但图像本身没有被绘制,因为颜色开关是在​​两个表面之前应用的,而后者在之后被绘制到纹理上。

有什么线索吗?我没有兴趣为我的问题找到另一种解决方案,因为我需要能够使用固定地图进行精确的像素颜色切换,我只想了解为什么会发生这种情况(因为 PNG 应该只包含确切的值,被无损)并解决它。