无法在树莓派上用c++绘制

Unable to Draw in C++ on Raspberry Pi

本文关键字:c++ 绘制      更新时间:2023-10-16

多亏了一些人的帮助,我已经成功地编译并运行了下面的程序,但是尽管它一直在咕嘟咕嘟地响,我还是看不到Pi的屏幕上画了什么。

我不认为这是使用openvg和ajstarks代码所特有的问题,因为在我编译测试程序的问题期间,我尝试了一种不同的编写图像的方式(对不起,我所记得的是它是低级别的,不需要openvg的包含)。这需要一些搜索和重写才能使它编译,当它完成时,同样的事情发生了。

我坚持了一会儿,但毫无进展。有一些关于树莓派和X Windows的限制导致了同样的问题。你画了一些东西,但它不显示。考虑到有几个评论暗示openvg可以工作,我回到了它,并(感谢一个叫Ross的家伙)最终解决了为什么我不能编译代码。

所以现在我在一个点上,我可以编译代码,其他人必须成功运行,但它不会在屏幕上绘制任何东西。我知道代码可以运行——它消耗了CPU周期(官方的演示确实如此,我的演示虽然还在运行,但不那么消耗CPU周期),而且代码可以退出

另一种处理图形的方法遇到了同样的无输出显示问题,所以我认为问题是在我的Pi上的某个地方,但我对如何解决X窗口(或者它可能是X11,希望我保持标签打开!)画了空白,不想画问题。

任何帮助都非常感激,提前感谢!

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
extern "C" {
#include "VG/openvg.h"
#include "VG/vgu.h"
#include "fontinfo.h"
#include "shapes.h"
}
using namespace std;
int main (void) {
int width, height;
        VGfloat w2, h2, w;
    char s[3];
    init(&width, &height);                                      // Graphics initialization
    w2 = (VGfloat)(width/2);
    h2 = (VGfloat)(height/2);
    w  = (VGfloat)w;
    Start(width, height);                                       // Start the picture
    Background(0, 0, 0);                                        // Black background
    Fill(44, 77, 232, 1);                                       // Big blue marble
    Circle(w2, 0, w);                                           // The "world"
    Fill(255, 255, 255, 1);                                     // White text
    TextMid(w2, h2, "hello, world", SerifTypeface, width/10);   // Greetings
    End();                                                      // End the picture
    fgets(s, 2, stdin);                                         // Pause until RETURN]
    finish();                                                   // Graphics cleanup
    exit(0);
}

Ok…

多亏了运气,我找到了答案,这很奇怪。对我来说……

如果其他人遇到这个问题,这里是(部分)解决方案,它会导致另一个问题很快发布。

我正试图在我的学校运行一个编程俱乐部,这是不实际的物理连接Pi的kb,鼠标和显示器,所以他们都自动运行VNC,我们使用Ultra-VNC连接到机器。程序在共享目录中编写,Eclipse c++在主机上运行;因此,所有的程序输出都是通过VNC查看的。

我一直在继续尝试解决这个问题,有一次连接了键盘和鼠标,并注意到它们似乎被识别(激光出现,Caps Lock切换等),但它们在移动/键入时没有做任何事情。

最后,当我越来越困惑为什么其他人没有遇到这个问题时,硬币开始在边缘打滑。似乎很奇怪,没有其他人有这个问题,然后我开始想知道更多关于kb/mouse问题。

我试着把HDMI输出插入家里的显示器(学校的仍然是模拟d-sub!),你瞧,物理kb和鼠标工作了。然后事情变得很奇怪!

不知怎么的,我有两个桌面同时运行。其中一个由物理键盘和鼠标控制,另一个由VNC控制。有趣的是,VNC的标题Pi的X桌面表明图形问题可能与X有关,但我不确定原因如下。

如果我在"物理"桌面启动终端窗口,它不会显示在"VNC"桌面,反之亦然-它们似乎是独立的,尽管这并不完全正确。

当我在"物理"桌面运行测试文件时,它工作得很好,可以只使用物理kb来控制。当我在"VNC"桌面运行它时,它只能用VNC kb来控制,但输出显示在物理屏幕上。

我真的不明白!

因此,这回答了最初的问题,因为程序确实在Pi上运行。

去张贴(希望是最后一个)关于如何让VNC显示"物理"桌面或如何将图形输出目标到"正确"桌面的问题。