我正在尝试修改我的Raspberry Pi上的hello_triangle示例(/opt/vc/src/hello_pi/hello_triangle
)以输出到fb1而不是fb0。
我搜索了所有我能想到的没有答案的东西(可能是我不知道该搜索什么)。
我需要修改的行似乎是这一行:
state->display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
文档声明参数的类型为NativeDisplayType
,“指定要连接的显示.EGL_DEFAULT_DISPLAY表示默认显示。”但是,它没有提供有关如何列出/查找可用显示的任何信息。
EGL_DEFAULT_DISPLAY
定义为(NativeDisplayType)0
所以我猜测0指的是fb0,但使用(NativeDisplayType)1
表示fb1导致eglGetDisplay
返回EGL_NO_DISPLAY
。
原始示例按原样输出到fb0,没有问题
我也知道我的显示器工作正常,因为我可以使用fbi
在fb1上显示图像就好了。
答案 0 :(得分:2)
快速回答:你做不到。
有关详细信息,请参阅Raspberry Pi论坛上的post。
RPi上的EGL根本不使用linux framebuffers,而不是fb1和fb0。图形硬件在更高级别(dispmanx)工作,显示由多个层组成,当linux启动时,它创建一个层来覆盖fb0的全屏。当您使用EGL创建窗口时,您还可以创建一个新图层并告诉硬件将其显示在其他图层之前。