问题标签 [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 投票
1 回答
412 浏览

c++ - 奇怪的 SDL_Surface->format->BytesPerPixel 值

所以我使用 SDL_image 在我的 OpenGL 应用程序中加载高度图并创建地形。

这就是我初始化 SDL_image 的方式:

...这是我的加载功能:

然后,在我准备顶点缓冲区的地形类中,我正在使用这种方法读取像素值:

...事实证明,每次我运行程序img->format->BytesPerPixel时都会返回一个随机值...到底是什么?有谁有想法吗?这应该只返回 1、2、3 或 4。

0 投票
3 回答
4908 浏览

c++ - 'IMG_Load' 未在此范围 SDL 2 中声明

我正在尝试使用 SDL 创建一个应用程序,我想在我的窗口上添加一个图标,但是当我编译时出现此错误:

我正在使用cmakemake进行编译,这里是CMakeLists.txt

这里是main.cpp

我试图在包含目录中添加 SDL_image.h 但我收到错误,因为编译器无法找到 SDL_image.h 中指定的 SDL.h ...

感谢您的帮助!

0 投票
1 回答
148 浏览

c++ - SDL2/SDL_Image 加载 objcopy 文件

如主题所述,我正在使用 objcopy 通过 Eclipse Helios for windows 使用 MinGW 加载 SDL_Image 图像。我正在使用命令:objcopy --input-target binary --output-target pei-i386 --binary-architecture i386 Lilothyn.jpg Lilothyn.o 这导致文件:

... 和另一个:

问题是最后一个文件 (Tommy.o) 正确加载,而第一个文件 (Lilothyn.o) 没有。如您所见,两者看起来很相似。

我的代码很广泛,所以我只会发布相关部分。

源.cpp:

来源.h:

和输出:

请注意,它没有写第二个“getTextureFromJPEGStream!” 它似乎也没有引发异常。它编译没有任何问题,所以 Lilothyn.o 文件是否有可能被创建损坏?(我已经重建了不止一次)和/或链接器可能没有正确链接?执行时,程序在加载第一个图像后停止响应,同时尝试加载第二个图像。感谢您的答复。

0 投票
1 回答
1741 浏览

linux - 配置 libgraph:SDL_Image 即使已安装也未找到

我必须在我的 Crunchbang (Debian/7.7) 系统中安装 libgraph (1.0.1)。
当然,在那之前你有一些依赖。SDL_Image 已成功从源下载并安装。我编译了一个带有 SDL 头文件的 C++ 程序来测试它......完美运行。
但是,在运行./configure时它仍然会抛出:

SDL 和 SDL_image 包已安装。

从其他问题来看,SDL_image 文件可能位于不同的目录中,而不是“默认”目录。但是检测到 SDL,它们安装在同一个地方。有什么问题?

0 投票
1 回答
519 浏览

c - SDL OpenGL 纹理被绿色色调困扰

尝试使用 SDL_image 将图像加载到 OpenGL 纹理时,我收到了意外的输出。

我的代码的相关部分是:

我加载的本机图像是:

输入.jpg

但输出是:

输出.jpg

根据我在另一篇 Stack Overflow帖子中所读到的内容,我认为这可能是一个倒置通道问题,但建议的解决方案并不能解决我的问题。我的方法/代码有什么问题?

0 投票
1 回答
746 浏览

opengl - glReadPixels 交换蓝色和红色

我正在尝试将 opengl 中的屏幕区域保存到位图中。我尝试过使用 FreeImage 和 SDL_Image,它们都要求我交换红色和蓝色通道。当然,这让我怀疑 glReadPixels 是这里的问题......我有这个示例代码:

除非我在调用 CreateRGBSurfaceFrom 后手动交换红色和蓝色通道,否则它的颜色将在 BMP 上交换。glReadPixels 应该这样做吗?我正确地调用它吗?这里有什么问题?

0 投票
0 回答
612 浏览

c - SDL - 在 blit 期间不得锁定曲面

我正在尝试用 C 编写一个简单的游戏。我使用 SDL2 来绘制东西。这是一个主循环:

这是draw_player函数:

它编译良好,但运行后不显示播放器。输出:

我不明白为什么self->surface->locked在 draw_player 函数中是 NULL。指向表面的指针是相同的,所以......我真的不明白。我没有在我的代码中的任何地方调用 SDL_LockSurface 但 SDL 抱怨表面在 blit - 期间被锁定Surfaces must not be locked during blit。我试图在 SDL_BlitSurface 之前调用 SDL_UnlockSurface 但没有任何改变。有任何想法吗?我必须注意,我是 C 和 SDL 的初学者。我运行 Fedora 24。因为 SDL 是跨平台库,所以应该不是问题。我使用 gcc 6.1.1。

玩家的精灵是 png 格式,这就是我使用 IMG_Load 的原因。以下是播放器的创建方式:

最后我要告诉你的。我在 GameObject 结构中存储指向绘制和更新函数的指针。所以我把 update_player 称为player->update(...). 绘图函数也是如此。这是一个有点hacky的风格,但我喜欢它。我试图马上打电话给 draw_player。由于结果相同,我认为我的编码风格不是问题。但我可能错了。随时纠正我。

编辑:我可能会发现那个错误。SDL_BlitSurface(window, NULL, self->surface, NULL);应该是SDL_BlitSurface(screenSurface, NULL, self->surface, NULL);。Window 是指向 SDL_Window 的指针,而 screenSurface 是指向 SDL_Surface 的指针。为什么编译的时候没有报错??好的,错误消失了。但没有任何显示。

编辑号 2 我找到了。这是一个愚蠢的错误。这是正确的解决方案:SDL_BlitSurface(self->surface, NULL, screenSurface, NULL); SDL_BlitSurface 如下所示:

首先必须是源表面和第三目标表面。是反过来写的。它导致了一个错误。

0 投票
1 回答
149 浏览

common-lisp - Lispbuilder-SDL:翻转曲面并保留颜色键(透明度)

解释

我正在使用 SDL 在 CL 中编写海龟图形应用程序。我创建了一张乌龟的图画并将其保存在 PNG 中。问题 1:SDL:LOAD-IMAGE在图像的实际透明度方面效果不佳。所以,我用白色为透明部分着色并做了

因此,:COLOR-KEY选项表示所有SDL:*WHITE*像素都是透明的。这很有效:在黄色背景上绘制乌龟没有显示白色像素。

但是,我希望我的乌龟指向一个特定的方向,并在对TURN命令的响应中改变它。我发现的一个建议是将精灵用于所有可能的角度,但这对海龟来说效果不佳:方向太多。

所以,我已经加载LISPBUILDER-SDL-GFX,使用SDL:ROTATE-SURFACE-XY。它确实可以很好地旋转乌龟。我可以看到,它SDL:*WHITE*被设置为颜色键,并且在旋转的表面中启用了颜色键控。但是,当我绘制它时,仍然呈现白色。有没有办法来解决这个问题?

完整代码

日志(VOM)输出

截屏

海龟截图

系统信息

带有 libSDL-1.2.so.0.11.4、libSDL_gfx.so.15.9.1 和 libSDL_image-1.2.so.0.8.4 的 Ubuntu 16.04

SBCL 1.3.7(来自 roswell sbcl-bin)

0 投票
1 回答
733 浏览

sdl-2 - SDL2 IMG_Load“不支持的图像格式”错误消息?

我正在尝试加载 png 图像。libsdl2-dev 和 libsdl2-image-dev 软件包已安装,我包括 SDL2/SDL_image.h。IMG_Init 正常工作,但 IMG_Load 错误。

在我的台式机(Ubuntu)上它可以工作(将 png 加载到 SDL_Surface),但看起来我的笔记本电脑(也是 Ubuntu)没有链接所需的 png 库。

ldd (桌面) libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007ff58db3c000)

ldd(笔记本电脑)没有 libpng 库

即使这两台机器在同一个位置都有这个库。

我怎样才能弄清楚为什么它没有链接?

编辑: IMAGE_Init(IMG_INIT_PNG) 导致错误“不支持 PNG 图像”

0 投票
2 回答
5493 浏览

c++ - C++ IMG_LoadTexture() 返回 null

我正在尝试加载图像(“carnero.png”),但是当我使用 IMG_LoadTexture() 时,它返回 null;

游戏.h

游戏.cpp

这个函数返回空

但是当我使用 SDL_LoadBMP() 加载背景时,它可以工作。我尝试将我的 .png 放在其他文件夹中,但它也不起作用。我还尝试使用 IMG_LOAD() 加载我的 .png,但我没有成功。