python中没有glGenFramebuffers,但在javascript中可用[关闭]

Posted

技术标签:

【中文标题】python中没有glGenFramebuffers,但在javascript中可用[关闭]【英文标题】:No glGenFramebuffersin python but available in javascript [closed] 【发布时间】:2018-11-23 16:08:51 【问题描述】:

我正在尝试使用 OpenGL 库将 hackathon-slicer 移植到 python3。 hackathon 切片器是用 node/javascript 编程的,在我的旧笔记本电脑上运行良好。

但是,当我使用 OpenGL 库将其移植到 python 时,我在“glGenFramebuffers”上收到错误,因为 glGenFramebuffers 不可用。我检查了,OpenGL 库有可用的功能。此外,由于它在 node/javascript 中运行良好,我的笔记本电脑显卡也有 FrameBuffer 可用。

那么真正的问题是什么以及如何解决呢?非常感谢任何帮助!

【问题讨论】:

这里的一些代码,如help docs 推荐,将帮助任何人找到解决方案。一些问题:你链接到什么 OpenGL 库?您要求什么 OpenGL 版本和 配置文件 【参考方案1】:

发现问题。在创建 OpenGL 上下文后,您显然只有 glGenFramebuffers 。上下文现在在类 init 中创建。

class Viewport:
def display(self):
    # Clear the color and depth buffers
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)

    # ... render stuff in here ...
    # It will go to an off-screen frame buffer.

    # Copy the off-screen buffer to the screen.
    glutSwapBuffers()

def __init__(self):
    glutInit(sys.argv)

    # Create a double-buffer RGBA window.   (Single-buffering is possible.
    # So is creating an index-mode window.)
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH)

    # Create a window, setting its title
    glutCreateWindow('interactive')

    # Set the display callback.  You can set other callbacks for keyboard and
    # mouse events.
    glutDisplayFunc(self.display)

在这之后,下面的代码就可以工作了:

    def renderSlice(self):
    glDisable(GL_DEPTH_TEST)
    glEnable(GL_STENCIL_TEST)
    glViewport(0, 0, 2560,1440)#printer.resolution.x, printer.resolution.y)

    # Bind the target framebuffer
    sliceFbo = glGenFramebuffers(1)

【讨论】:

以上是关于python中没有glGenFramebuffers,但在javascript中可用[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 glGenFramebuffers 生成帧缓冲区

使用 GLFW + GLEW 时 glGenFramebuffers() 访问冲突

渲染成 3D 纹理

glBindFramebuffer 上的标志

绘制渲染缓冲区对象的内容

◰GL-阴影贴图核心步骤