问题标签 [python-moderngl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何在 Moderngl EGL 后端启用抗锯齿?
此代码在没有抗锯齿 ( samples=0) 时呈现彩色三角形。但是当我打开抗锯齿 ( samples=1...32) 时,它无法渲染任何东西。如何使其与抗锯齿一起使用?也许我无法直接从多重采样 fbo 或纹理中读取像素,但我不知道如何解决这个问题。
python - 如何在 Moderngl EGL 后端添加深度缓冲区?
当注释samples=8深度缓冲区行时,此代码使用抗锯齿 ( ) 呈现彩色三角形。depth_attachment=ctx.depth_texture((512, 512), samples=8)
但是当我添加一个深度缓冲区时,它会在绑定fbo_msaa帧缓冲区时返回一个 GL 错误GL_READ_FRAMEBUFFER。你知道如何解决这个错误吗?
python - ModernGL 渲染返回 GL_INVALID_ENUM 错误?
我已经使用 GLES 和 EGL 用 C 语言编写了这个 GPU 代码,并且运行良好。我现在正在尝试使用 ModernGL 将此 GPU 代码移植到 python,除了在我调用渲染函数之后,ctx 返回一个 GL_INVALID_ENUM 错误。我正在使用带有 Mali400 GPU 的 NanoPi M1 Plus,它仅支持 OpenGL 版本 120。
显卡代码:
输出:
任何帮助将不胜感激,因为这是我最后一年的项目所必需的。
python - 在 Pygame 中的 moderngl 上下文中绘制对象
我编写了这个简单的程序,它使用 将图像显示到moderngl上下文中,pygame我的目标是在屏幕上绘制一个矩形。(这显然只是一个最小的工作示例,真正的目标是为纹理制作动画并在屏幕上制作更多的矩形)。
我尝试过的一些事情:
用“常规”方式绘制一个矩形
pygame,即在 main 方法中添加这一行,run在顶点数组渲染之前或之后(两者都不起作用):而不是 flag
pygame.OPENGL,使用 flagpygame.OPENGLBLIT然后blit使用矩形(没用,更多信息在这里)使用
moderngl上下文作为主显示器内的窗口,如此处所建议的,然后blit将矩形放到主显示器上。这不是我的目标,我希望能够在上下文中显示文本和形状,但仍然想至少尝试一下。也没有工作,下面的代码(替换相应的代码__init__)导致异常cannot detect OpenGL context:使用“开箱即用”窗口
moderngl_window使用pygame(代码here)。同样,没有成功在上下文本身上绘制一个矩形 - 尝试在窗口代码本身内部或当我编写从这个 pygame 窗口继承的我自己的窗口时从 (1) 添加同一行。
[正在运行:Windows10、python3.6、pygame 1.9.6、moderngl 5.6.1]
如何创建一个既显示图形又具有一层服装对象的窗口?(文本、按钮等)
编辑:也许需要澄清我的动机:我想在背景中有一层图形,在上面的例子中是对输入图像的一些操作。然后,在前台,我想要一些服装 PyGame 对象,如几何形状、按钮等。
python - 如何在python中使用moderngl将原语设置为GL_LINES
我正在使用以下代码使用moderngl 和moderngl_window 在屏幕上呈现一个矩形。这主要来自他们的例子:
但我不知道我需要用moderngl调用什么函数来设置渲染模式GL_LINES而不是GL_TRIANGLES
我想我需要打电话glDrawArrays,但我找不到如何使用 Moderngl 访问它。
谢谢你的帮助!
python - ModernGL 套装制服
我正在考虑通过 PyOpenGL 切换到 ModernGL,我现在正在努力实现任何东西。
首先,我想尝试经典的“使用时间统一和正弦函数改变形状的三角形”,但我一直坚持如何写统一。
以下是文档对此的说明:
统一是使用“统一”存储限定符声明的全局 GLSL 变量。这些充当着色器程序的用户可以传递给该程序的参数。
在 ModernGL 中,可以使用
Program.__getitem__()或访问制服Program.__iter__()。
这是我的代码:
现在它什么也没画。我究竟做错了什么?谢谢!
python - 在 ModernGL 中使用 TextureArray
我最近开始使用 ModernGL,今天我想开始使用纹理数组。我只是坚持如何在 Moderngl 中传递各个子纹理?在 OpenGL 中,我会调用glTexSubImage3D. 但是,在 ModernGL 文档中,Context.texture_array需要 3 个参数:size、components和data. 我认为data应该是所有的图像堆叠?我将如何使用 PIL 和可能的 numpy 来解决这个问题?
python - 为什么纹理索引 31 在moderngl 中被覆盖?
我正在编写一个简单的应用程序,它加载图像并将其显示在屏幕上,以便分别呈现左半部分和右半部分。
运行此程序将打开一个带有您的图像的窗口test.jpg。
但是在纹理索引 31 处发生了一些奇怪的事情:
如果您更改索引以使首先加载的纹理(在我们的例子中是左侧纹理,如render方法中所述)具有索引 31,它将被另一个纹理覆盖,并且您将看到右半部分重复两次。
我应该指出,如果我只有一个纹理,而不是两个,并且该纹理的索引为31,则不会有问题。仅当一个纹理具有索引且另一个纹理在纹理之后31加载时,才会出现此问题。31
[编辑:我还应该指出,我加载超过32 个纹理没有问题。如果我要将图像分成 32 个或更多块(而不是上面示例中的 2 个块),甚至 64 个块或更多块,唯一的问题将是纹理索引31将被最后加载的纹理覆盖。]
我有一个模糊的猜测,这与将数字31作为 int 操作的方式有关吗?(像这里)
所以,最后,我的问题是- 这里发生了什么?我是否错过了正在发生的更大的事情,或者它只是生活中的一个事实,我应该避免纹理索引31并忘记它?



