问题标签 [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.

0 投票
1 回答
399 浏览

python - 如何在 Moderngl EGL 后端启用抗锯齿?

此代码在没有抗锯齿 ( samples=0) 时呈现彩色三角形。但是当我打开抗锯齿 ( samples=1...32) 时,它无法渲染任何东西。如何使其与抗锯齿一起使用?也许我无法直接从多重采样 fbo 或纹理中读取像素,但我不知道如何解决这个问题。

0 投票
1 回答
268 浏览

python - 如何在 Moderngl EGL 后端添加深度缓冲区?

当注释samples=8深度缓冲区行时,此代码使用抗锯齿 ( ) 呈现彩色三角形。depth_attachment=ctx.depth_texture((512, 512), samples=8)

但是当我添加一个深度缓冲区时,它会在绑定fbo_msaa帧缓冲区时返回一个 GL 错误GL_READ_FRAMEBUFFER。你知道如何解决这个错误吗?

0 投票
1 回答
88 浏览

python - ModernGL 渲染返回 GL_INVALID_ENUM 错误?

我已经使用 GLES 和 EGL 用 C 语言编写了这个 GPU 代码,并且运行良好。我现在正在尝试使用 ModernGL 将此 GPU 代码移植到 python,除了在我调用渲染函数之后,ctx 返回一个 GL_INVALID_ENUM 错误。我正在使用带有 Mali400 GPU 的 NanoPi M1 Plus,它仅支持 OpenGL 版本 120。

显卡代码:

输出:

任何帮助将不胜感激,因为这是我最后一年的项目所必需的。

0 投票
0 回答
180 浏览

python - 失真系数的负值会导致使用 OpenGL 顶点着色器的图像损坏

我正在使用 python moderngl 从由数字高程模型和机载照片制作的点云生成模拟场景视图。我在 GLSL Vertex Shader 中实现了一个基于 OpenCV 的相机模型,它通常运行良好。

但是,径向畸变系数(k1 或 k2)的某些负值会导致图像损坏。

下面是顶点着色器和片段着色器的代码。

下面我展示了制作模型视图和透视投影矩阵的 R 程序。

这是一个没有错误的生成图像

正确的图像

这是坏掉的

损坏的图像

0 投票
2 回答
943 浏览

python - 在 Pygame 中的 moderngl 上下文中绘制对象

我编写了这个简单的程序,它使用 将图像显示到moderngl上下文中,pygame我的目标是在屏幕上绘制一个矩形。(这显然只是一个最小的工作示例,真正的目标是为纹理制作动画并在屏幕上制作更多的矩形)。

我尝试过的一些事情:

  1. 用“常规”方式绘制一个矩形pygame,即在 main 方法中添加这一行,run在顶点数组渲染之前或之后(两者都不起作用):

  2. 而不是 flag pygame.OPENGL,使用 flagpygame.OPENGLBLIT然后blit使用矩形(没用,更多信息在这里

  3. 使用moderngl上下文作为主显示器内的窗口,如此处所建议,然后blit将矩形放到主显示器上。这不是我的目标,我希望能够在上下文中显示文本和形状,但仍然想至少尝试一下。也没有工作,下面的代码(替换相应的代码__init__)导致异常cannot detect OpenGL context

  4. 使用“开箱即用”窗口moderngl_window使用pygame代码here)。同样,没有成功在上下文本身上绘制一个矩形 - 尝试在窗口代码本身内部或当我编写从这个 pygame 窗口继承的我自己的窗口时从 (1) 添加同一行。

[正在运行:Windows10、p​​ython3.6、pygame 1.9.6、moderngl 5.6.1]

如何创建一个既显示图形又具有一层服装对象的窗口?(文本、按钮等)

编辑:也许需要澄清我的动机:我想在背景中有一层图形,在上面的例子中是对输入图像的一些操作。然后,在前台,我想要一些服装 PyGame 对象,如几何形状、按钮等。

0 投票
1 回答
238 浏览

python - 如何在python中使用moderngl将原语设置为GL_LINES

我正在使用以下代码使用moderngl 和moderngl_window 在屏幕上呈现一个矩形。这主要来自他们的例子:

但我不知道我需要用moderngl调用什么函数来设置渲染模式GL_LINES而不是GL_TRIANGLES

我想我需要打电话glDrawArrays,但我找不到如何使用 Moderngl 访问它。

谢谢你的帮助!

0 投票
2 回答
723 浏览

python - 如何在 python-moderngl 中渲染具有不同纹理的多个对象

我正在尝试创建一个无头渲染器,它采用 2 个具有不同纹理的模型,然后将它们都渲染成一个图像

在此仅最终导出第二个模型并覆盖初始模型。我尝试了很多资源来找到这个问题的答案,但找不到任何答案。

编辑 - 添加了我正在尝试创建的图像。第一个模型即圆柱体,然后用不同的纹理观察它。

手表和它后面的气缸是两种型号。

0 投票
1 回答
341 浏览

python - ModernGL 套装制服

我正在考虑通过 PyOpenGL 切换到 ModernGL,我现在正在努力实现任何东西。

首先,我想尝试经典的“使用时间统一和正弦函数改变形状的三角形”,但我一直坚持如何写统一。

以下是文档对此的说明:

统一是使用“统一”存储限定符声明的全局 GLSL 变量。这些充当着色器程序的用户可以传递给该程序的参数。

在 ModernGL 中,可以使用Program.__getitem__()或访问制服Program.__iter__()

这是我的代码:

现在它什么也没画。我究竟做错了什么?谢谢!

0 投票
1 回答
126 浏览

python - 在 ModernGL 中使用 TextureArray

我最近开始使用 ModernGL,今天我想开始使用纹理数组。我只是坚持如何在 Moderngl 中传递各个子纹理?在 OpenGL 中,我会调用glTexSubImage3D. 但是,在 ModernGL 文档中,Context.texture_array需要 3 个参数:sizecomponentsdata. 我认为data应该是所有的图像堆叠?我将如何使用 PIL 和可能的 numpy 来解决这个问题?

0 投票
1 回答
133 浏览

python - 为什么纹理索引 31 在moderngl 中被覆盖?

我正在编写一个简单的应用程序,它加载图像并将其显示在屏幕上,以便分别呈现左半部分和右半部分。

运行此程序将打开一个带有您的图像的窗口test.jpg

但是在纹理索引 31 处发生了一些奇怪的事情:

如果您更改索引以使首先加载的纹理(在我们的例子中是左侧纹理,如render方法中所述)具有索引 31,它将被另一个纹理覆盖,并且您将看到右半部分重复两次。

示例错误

我应该指出,如果我只有一个纹理,而不是两个,并且该纹理的索引为31,则不会有问题。仅当一个纹理具有索引且另一个纹理在纹理之后31加载时,才会出现此问题。31

[编辑:我还应该指出,我加载超过32 个纹理没有问题。如果我要将图像分成 32 个或更多块(而不是上面示例中的 2 个块),甚至 64 个块或更多块,唯一的问题将是纹理索引31将被最后加载的纹理覆盖。]

我有一个模糊的猜测,这与将数字31作为 int 操作的方式有关吗?(像这里

所以,最后,我的问题是- 这里发生了什么?我是否错过了正在发生的更大的事情,或者它只是生活中的一个事实,我应该避免纹理索引31并忘记它?