GL_MULTISAMPLE在哪里定义?

虽然我不鼓励我阅读OpenGL红皮书,但我仍然这样做,因为它是为初学者设计的唯一一本书,教程和/或文档虽然非常重要,但并不能完全替代一本书。为了证明自己的合理性:) 现在,有一个使用多重采样的抗锯齿的例子,其中涉及到
glEnable(GL_MULTISAMPLE);
我使用Qt,我得到一个编译错误,因为GL_MULTISAMPLE是一个未声明的标识符。我目前看到以下原因: 对于某些实现,包括Qt附带的实现,未定义GL_MULTISAMPLE。 它不在GL / gl.h或GL / glu.h中,而是在一些其他标题中,不包含在
<QGLWidget>
中或不附带Qt 它已过时/弃用 上述原因之一是否正确?如果没有,这就是我没有它的原因,我怎样才能获得?提前致谢     
已邀请:
GL_MULTISAMPLE
曾经是OpenGL的扩展,直到1.3,并且它是否实现取决于您的硬件/驱动程序/供应商实现。你可能真的想用
GL_MULTISAMPLE_ARB
代替。如果您使用的是Windows,则提供的OpenGL标头不会包含此宏。 也可以看看: http://www.opengl.org/resources/faq/technical/extensions.htm http://www.gamedev.net/community/forums/topic.asp?topic_id=536666 RA的响应将简化扩展处理 - 我更喜欢自己使用
GLee
,但它们几乎可以互换(而且GLee做了懒惰的init,这有助于我解决Solaris上的一个关键问题),但是GLEW保持更新(GLee已经过时了)现在科斯引起了我的注意。)     
既然你说你正在使用Qt的库,那么GLEW等可能不是必需的,因为Qt为你包装和绑定了扩展。 如果你正在使用QGLWidget,那就特别容易了。检查Qt附带的这个示例并使用
GL_MULTISAMPLE
,特别是定义的glwidget.cpp文件:
#ifndef GL_MULTISAMPLE
#define GL_MULTISAMPLE  0x809D
#endif
如果要自定义FSAA示例,请将您自己的QGLFormat传递给QGLWidget构造函数,例如:
QGLFormat format;
format.setDoubleBuffer(true);
format.setDepth(false);
format.setAlpha(false);
format.setSampleBuffers(true);
format.setSamples(4);
QGLWidget *glw = new QGLWidget(format);
根据自己的喜好改变
format.setSamples(4)
。在渲染场景之前,务必在paintGL()函数中添加
glEnable(GL_MULTISAMPLE)
。     
一个帮助扩展的库http://glew.sourceforge.net/     
GL_MULTISAMPLE在glext.h中定义,glext.h包含在一些linux包中:glew,gtkglext或者带有一些opengl驱动程序(请看这里:http://www.opengl.org/registry/#headers)。     

要回复问题请先登录注册