ruby - 带有 Ruby 的 OpenGL 3.1+

标签 ruby opengl

我关注了this post在 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 绑定(bind)(对于非固定管道)?

最佳答案

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

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

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

我从未使用过 Ray,所以我想说的是继续查阅文档或查看示例项目以了解缓冲区交换是如何完成的。

关于ruby - 带有 Ruby 的 OpenGL 3.1+,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16048197/

相关文章:

c++ - 在 OpenGL/GLFW 3.2 中在窗口和全屏之间切换

ruby-on-rails - 嵌套数组和生成类似真值表的组合

ruby-on-rails - ActiveRecord:属性存在的范围

.net - IronRuby 中可用的 Ruby 数据访问方法

OpenGL glRotate 和 glTranslate 顺序

c++ - Qt 应用程序适用于台式机,但不适用于笔记本电脑?

java - OpenGL/Java 学习曲线

python - 将 contextlib 与 cython 一起使用

ruby - Ruby 中的函数重载

ruby-on-rails - Brakeman:文件名警告中使用的模型属性