2

我按照这篇文章在 Ruby 上使用 OpenGL(可编程管道)

基本上,我只是想创建一个蓝色窗口,这是代码。

Ray::GL.major_version = 3
Ray::GL.minor_version = 2
Ray::GL.core_profile  = true # if you want/need one

window = Ray::Window.new("Test Window", [800, 600])
window.make_current

glClearColor(0, 0, 1, 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);

相反,我创建了一个白色窗口。这表明我遗漏了一些东西,但我无法弄清楚我遗漏了什么,因为 Ruby 上的 OpenGL 资源似乎有限。我一直在网上搜索,但我发现的只是 Ruby 的固定管道 OpenGL 的东西。

是的,我可以使用 Ray 的内置函数来设置背景颜色和绘制内容,但我不想这样做。我只是想用 Ray 来设置窗口,然后直接调用 OpenGL API。但是,我无法弄清楚我在上面的代码中缺少什么。

我将不胜感激任何提示或指针(也许我需要交换缓冲区?但后来我不知道如何使用 Ray)。有没有熟悉使用 Ray 的机构可以给我一些提示?

或者,是否有任何其他工具可以让我设置 OpenGL 绑定(对于非固定管道)?

4

1 回答 1

1

您似乎将清除颜色设置为蓝色,然后清除后台缓冲区以使其变为蓝色。但是,正如您所说,您没有交换缓冲区以将后台缓冲区放到屏幕上。就交换缓冲区而言,这是堆栈溢出的另一个答案

“交换双缓冲窗口的前后缓冲区是底层图形系统提供的功能,即 Win32 GDI 或 X11 GLX。您正在寻找的功能是 wglSwapBuffers 和/或 glXSwapBuffers。在 MacOS X 上,NSOpenGLViews 会自动交换了。

但是,您很可能正在使用一些框架,例如 GLUT、GLFW 或 Qt,它们提供了围绕这些功能的可移植包装器。阅读框架的文档。”

我从来没有使用过 Ray,所以我会说只是继续在文档中查找或查看示例项目以了解缓冲区交换是如何完成的。

于 2013-04-16T23:16:01.263 回答