【问题标题】:Sample program for "openSuse and openGL" environment“openSuse 和 openGL”环境的示例程序
【发布时间】:2011-09-06 20:22:11
【问题描述】:

我在 OpenSuse 11.3(一个非常新的安装)中为 openGL 编写了这样的示例代码(安装了从 Yast2 的软件管理器中搜索 openGL 的所有库)。

**File: SimpleOpenGL.c**

#include <GL/glut.h>

int main(int argc,char **argv)
{
    glutInit(&argc,argv);

    glutInitWindowPosition(100,100);
    glutInitWindowSize(800,600);
    glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
    glutCreateWindow("Window");
}

Compiling with : $ gcc -o foo -lGL -lglut SimpleOpenGL.c
Running with   : $ ./foo
freeglut (./foo): failed to open display ''

我是否必须在 Suse 中安装任何其他库才能使其正常工作?

【问题讨论】:

  • 万一,您不是坐在 OpenSuse 工作站前吗?无法打开显示通常意味着没有活动的 X 主机。
  • 我在安装了 OpenSuse 11.3 的 HP 笔记本电脑上。那么,是否有任何解决方法可以绕过该问题? :(

标签: c opengl opensuse freeglut


【解决方案1】:

您需要将DISPLAY 环境变量设置为指向您的X 服务器(显然,它必须启动)。

如果运行该代码的主机是同一台主机,DISPLAY=:0 将适用于常规设置。

如果您通过 SSH 远程运行该代码,请确保您的服务器和 ssh 客户端都设置为(并使用)X11 转发。 (在那之后它应该“正常工作”。)

如果您使用 SSH 以外的其他方式远程运行,请设置 DISPLAY=&lt;hostname or IP address of your display&gt;:&lt;display number&gt;,例如:

DISPLAY=192.168.0.1:0.0

[注意:要使 OpenGL 远程工作良好,您需要一个具有 GLX 扩展的服务器。]

【讨论】:

  • 恐怕我不熟悉 X-Server、DISPLAY environment var、x11 等这些术语。您能指导我完成 Suse 的几个步骤吗?
  • 有关 X11 显示系统的信息,请参阅X Window System。 X11 客户端(应用程序)使用 DISPLAY 环境变量来了解服务器(实际在屏幕上显示内容的东西)的位置。使用 X11,客户端和服务器不必在同一台机器上。
  • 我认为X在客户端支持3d加速?根据维基百科:“......网络透明性:运行应用程序(客户端应用程序)的机器可能与用户的本地机器(显示服务器)不同。X 的网络协议基于 X 命令原语,并且使用 GLX, OpenGL 3D 基元,而不是更基本的帧缓冲区复制范例。这种方法允许在远程 X 服务器上完全加速 2D 和 3D 操作。"
  • 谢谢,我不记得那部分了。
  • 我用来使其工作的程序是(1)以正常权限运行'xterm'(以sudo权限运行时不起作用)(2)弹出一个X窗口(3)运行make 命令(如果 makefile 已准备好所有链接和其他杂项)。但是,我收到“freeglut (./abc): Unknown X event type: 105”错误。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多