Linux C++ 上 Gtkmm 中的 OpenGL 模板缓冲区

Posted

技术标签:

【中文标题】Linux C++ 上 Gtkmm 中的 OpenGL 模板缓冲区【英文标题】:OpenGL Stencil Buffer in Gtkmm on Linux C++ 【发布时间】:2014-03-23 03:06:23 【问题描述】:

我一直在为一个学校项目尝试使用模板缓冲区生成反射。我正在关注本教程:http://www.opengl.org/archives/resources/code/samples/mjktips/Reflect.html 它描述了如何通过在平面上反射场景并再次绘制以创建反射来创建反射,然后剪切反射以去除突出的部分。 我按照教程进行操作,但没有剪裁,反射显示完整。我尝试了以下方法:

int i;
glGetIntegerv(GL_STENCIL_BITS,&i);
std::cout << "Stencil bits is " << i << std::endl;

输出是“Stencil bits is 0”。所以我根本没有模板缓冲区。如何在 Gtkmm 中创建模板缓冲区(我读到创建模板缓冲区是特定于库的)?

【问题讨论】:

你能把你的代码贴出来吗 当你初始化你的 opengl 上下文时,你设置了位平面计数。因此,如果您可以发布您的 opengl 上下文创建代码,我可以提供帮助... 【参考方案1】:

看完 j-p 的回复后,我意识到我找错地方了。我在项目中得到了一些启动代码,所以我忽略了 glContext 的设置。我需要做的是:

glconfig = Gdk::GL::Config::create(Gdk::GL::MODE_RGB |
                                 Gdk::GL::MODE_DEPTH |
                                 Gdk::GL::MODE_DOUBLE |
                                 Gdk::GL::MODE_STENCIL );

添加了 Gdk::GL::MODE_STENCIL 标志以在 Gtk 中启用模板模式。请注意,这是非常特定于库的。

【讨论】:

以上是关于Linux C++ 上 Gtkmm 中的 OpenGL 模板缓冲区的主要内容,如果未能解决你的问题,请参考以下文章

关于 glade3 和 gtkmm 的 Linux / C++ 帮助

将 C 中的 gtk3 与 C++ 中的 gtkmm 结合起来

gtkmm 程序的外观不佳

我应该学习 GTK+ 还是 GTKMM?

用 Gtkmm 创建一个网格向量

在 Eclipse 中为 C++ 设置 GTKmm