首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Colab中运行现代?

如何在Colab中运行现代?
EN

Stack Overflow用户
提问于 2020-03-28 18:42:12
回答 1查看 1.2K关注 0票数 2

我正试着在Colab里运行moderngl。我安装了它并运行了一个虚拟显示:

代码语言:javascript
复制
!sudo apt-get update --fix-missing && apt-get -qqq install x11-utils > /dev/null
!sudo apt-get update --fix-missing && apt-get -qqq install xvfb > /dev/null
!python3 -m pip install -U -qqq moderngl
!python3 -m pip install -U -qqq moderngl-window
!python3 -m pip install -U -qqq pyvirtualdisplay

from pyvirtualdisplay import Display
display = Display(visible=0, size=(960, 540)).start()

import moderngl
ctx = moderngl.create_standalone_context()
buf = ctx.buffer(b'Hello World!')  # allocated on the GPU
buf.read()

b'Hello World!'

它按预期打印,但当我运行一个示例时,我看到了错误:

代码语言:javascript
复制
!python3 /content/moderngl/examples/basic_alpha_blending.py --window pyglet

2020-03-28 10:25:48,312 - moderngl_window - INFO - Attempting to load window class: moderngl_window.context.pyglet.Window
Traceback (most recent call last):
  File "/content/moderngl/examples/basic_alpha_blending.py", line 74, in <module>
    AlphaBlending.run()
  File "/content/moderngl/examples/ported/_example.py", line 21, in run
    mglw.run_window_config(cls)
  File "/usr/local/lib/python3.6/dist-packages/moderngl_window/__init__.py", line 185, in run_window_config
    cursor=show_cursor if show_cursor is not None else True,
  File "/usr/local/lib/python3.6/dist-packages/moderngl_window/context/pyglet/window.py", line 54, in __init__
    config=config,
  File "/usr/local/lib/python3.6/dist-packages/pyglet/window/xlib/__init__.py", line 165, in __init__
    super(XlibWindow, self).__init__(*args, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/pyglet/window/__init__.py", line 588, in __init__
    config = screen.get_best_config(config)
  File "/usr/local/lib/python3.6/dist-packages/pyglet/canvas/base.py", line 194, in get_best_config
    raise window.NoSuchConfigException()
pyglet.window.NoSuchConfigException

我也尝试了另一个虚拟显示,但结果是相同的:

代码语言:javascript
复制
!python3 -m pip install -U -qqq  xvfbwrapper
from xvfbwrapper import Xvfb
display = Xvfb(width=960, height=540).start()

pyglet.window.NoSuchConfigException
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-31 02:44:42

在Google Colab中,你可以使用现代EGL 5.6的EGL后端。

代码语言:javascript
复制
ctx = moderngl.create_context(standalone=True, backend='egl')
print(ctx.info)

输出(部分):

代码语言:javascript
复制
{
    'GL_VENDOR': 'NVIDIA Corporation',
    'GL_RENDERER': 'Tesla P100-PCIE-16GB/PCIe/SSE2',
    'GL_VERSION': '3.3.0 NVIDIA 418.67',
    ....
}

默认情况下,现代by创建OpenGL 3.3核心上下文。例如,如果你需要更高的上下文版本,你可以传入OpenGL 4.3的require=430。我不知道这些Tesla卡支持什么。

对于这一点,现代语言中有一个标准的例子。它将能够创建标准的RGB三角形:https://github.com/moderngl/moderngl/blob/master/examples/headless_egl.py

创建上下文的底层库是glcontext (https://github.com/moderngl/glcontext)。

如果您使用的是moderngl-window包,则必须使用headless.Window,因为pyglet目前不能在headless模式下工作(将来可能是:https://github.com/pyglet/pyglet/issues/51)。

如果你遇到问题,在现代工程中提出一个问题:https://github.com/moderngl/moderngl或者入侵他们的不一致的服务器。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60900067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档