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

标签 c++ linux opengl gtk stencil-buffer

我一直在尝试为学校项目使用模板缓冲区生成反射。我正在关注本教程: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;

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

最佳答案

读完 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 中启用模板模式。请注意,这是特定于库的。

关于c++ - Linux C++ 上 Gtkmm 中的 OpenGL 模板缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22586571/

相关文章:

c++ - 在 OpenGL C++ 中绘制一个球和两个圆锥体

c++ - 内存屏障到底要解决什么问题?

c++ - 用 strtok 拆分后大部分字符串消失了吗?

linux - 使用 Linux 字符设备驱动程序的 'write' 函数中的参数之一

c - OpenGL 中的光照

c++ - 使用正射投影裁剪后的边缘伪影

c++ - 使用 {} 的函数重载解析

c++ - 打印一个结构指针和一个引用的结构成员

Linux SoftLink 到应用程序和执行

linux - 如何获取 shell 脚本所在位置的完整路径