SDL_RenderCopy()在Raspberry PI上有奇怪的行为
SDL_RenderCopy() has strange behavior on Raspberry PI
这把我逼疯了
我有一个非常简单的SDL2程序
它有一个由3个SDL_Texture指针组成的数组
这些纹理填充如下:
SDL_Texture *myarray[15];
SDL_Surface *surface;
for(int i=0;i<3;i++)
{
char filename[] = "X.bmp";
filename[0] = i + '0';
surface = SDL_LoadBMP(filename);
myarray[i] = SDL_CreateTextureFromSurface(myrenderer,surface);
SDL_FreeSurface(surface);
}
这是有效的,没有错误。
在主循环中(这只是一个等待SDL_QUIT、击键和SDL_Timer每秒放入事件队列的用户事件的标准事件循环),我只做(对于计时器触发的事件):
idx = (idx+1) % 3; // idx is global var initially 0.
SDL_RenderClear(myrenderer);
SDL_RenderCopy(myrenderer, myarray[idx], NULL, NULL);
SDL_RendererPresent(myrenderer);
这适用于0.bmp和1.bmp,但第三张图像(2.bmp)只是显示为一个黑色区域
这是结构性的
如果我交替前两个图像,它们都很好
如果我交替使用第二张和第三张图像,则第三张不会显示
如果我使用的图像超过3张,则3张及以上显示为黑色
装载顺序无关紧要。从磁盘加载的第三个映像开始出现问题
所有图像都是正确格式化的BMP。我甚至在加载2.bmp后使用SDL_SaveBMP()将其以不同的名称保存回磁盘,以确保它在内存中加载正常。新文件与原始文件完全相同。
该程序无需修改和相同的bmp文件,在OSX(XCode5)和Windows(VC++2012 Express)上运行良好
该问题仅在复盆子PI上显示
我对每个可能留下结果/错误代码的调用都进行了明确的错误检查(为了简洁起见,上面的示例中没有显示),但所有调用都显示"无错误">
我使用了www.libsdl.org的最新稳定源代码集,并按照指示进行了编译(配置、制作、安装等)
有人知道会发生什么吗?
p.S。键盘输入似乎对我的PI也不起作用,但我还没有深入研究。
当我终于自己想出来的时候,回答自己。。。
最后,我回到了SDL2源代码附带的README-raspberrypi.txt
我第一次读得不够仔细。。。
问题1:我在全高清显示器上运行。PI的默认GPU内存为64MB,这对于大型显示器和双缓冲来说是不够的。正如README中所建议的,我将其增加到128MB,从而解决了黑色图像的问题。
问题2:文本输入不起作用,因为我的用户帐户不在输入组中。我最初将默认的"pi"帐户添加到输入组中,但当我后来开始使用另一个帐户时,我忘记将该用户添加到组中。
简言之:被我自己(过于)快速浏览文档所困扰。
- 基于树莓pi的tensorflow lite量化ssd目标检测
- 计算 PI 最多 42 位小数
- 使用莱布尼茨公式的 Pi 近似
- 为什么 std::round(sin(pi/6)) 不等于 1?
- Opencv GStreamer管道在Raspberry Pi 4上不起作用
- Raspberry Pi OpenVG C/C++
- C++数学问题和 5/4*pi 与 5*pi/4
- Raspberry Pi Zero W 上的 OpenCV - 浮点异常
- 从Raspberry Pi / Linux上的Python脚本运行和停止C++程序
- 使 C++ Pi 近似在 GPU Nvidia 970M CUDA 上的 Paralell 中运行
- 仅在 rasperry pi 要求时才在 Arduino 上运行C++
- 在 c++ 或 python 中生成一个体面的视差图以在 Raspberry Pi 上实现的最佳方法(算法或函数)是什么
- 与Qt交叉编译到Raspberry Pi 3B+通讯录(协议缓冲区)-错误符号查找错误
- 为什么OpenCV在Raspberry Pi 3B+上表现不佳
- Get Ip of Rapberry Pi
- C++接线Pi崩溃
- 我想使用 I2C 接收从 arduino 到 raspberry pi 的多个数据
- Qt-QML JIT on Raspberry PI Rev. 1
- 接线Pi的分段错误
- 在Raspberry Pi上构建时OpenCV错误