“openSuse 和 openGL”环境的示例程序

Posted

技术标签:

【中文标题】“openSuse 和 openGL”环境的示例程序【英文标题】:Sample program for "openSuse and openGL" environment 【发布时间】: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 笔记本电脑上。那么,是否有任何解决方法可以绕过该问题? :( 【参考方案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”错误。有什么想法吗?

以上是关于“openSuse 和 openGL”环境的示例程序的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin 协程协程简介 ( 协程概念 | 协程作用 | 创建 Android 工程并进行协程相关配置开发 | 异步任务与协程对比 )

MASM驱动开发环境及示例

Kotlin 协程协程异常处理 ③ ( 协程异常处理器 CoroutineExceptionHandler 捕获异常 | 验证 CoroutineScope 协程的异常捕捉示例 )

Kotlin 协程协程异常处理 ③ ( 协程异常处理器 CoroutineExceptionHandler 捕获异常 | 验证 CoroutineScope 协程的异常捕捉示例 )

Kotlin 协程协程异常处理 ⑤ ( 异常传播的特殊情况 | 取消子协程示例 | 子协程抛出异常后父协程处理异常时机示例 | 异常聚合 | 多个子协程抛出的异常会聚合到第一个异常中 )

Kotlin 协程协程异常处理 ⑤ ( 异常传播的特殊情况 | 取消子协程示例 | 子协程抛出异常后父协程处理异常时机示例 | 异常聚合 | 多个子协程抛出的异常会聚合到第一个异常中 )