“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=<hostname or IP address of your display>:<display number>
,例如:
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 工程并进行协程相关配置开发 | 异步任务与协程对比 )
Kotlin 协程协程异常处理 ③ ( 协程异常处理器 CoroutineExceptionHandler 捕获异常 | 验证 CoroutineScope 协程的异常捕捉示例 )
Kotlin 协程协程异常处理 ③ ( 协程异常处理器 CoroutineExceptionHandler 捕获异常 | 验证 CoroutineScope 协程的异常捕捉示例 )
Kotlin 协程协程异常处理 ⑤ ( 异常传播的特殊情况 | 取消子协程示例 | 子协程抛出异常后父协程处理异常时机示例 | 异常聚合 | 多个子协程抛出的异常会聚合到第一个异常中 )
Kotlin 协程协程异常处理 ⑤ ( 异常传播的特殊情况 | 取消子协程示例 | 子协程抛出异常后父协程处理异常时机示例 | 异常聚合 | 多个子协程抛出的异常会聚合到第一个异常中 )