代码之家  ›  专栏  ›  技术社区  ›  Armen Tsirunyan

glu MULTISAMPLE定义在哪里?

  •  6
  • Armen Tsirunyan  · 技术社区  · 14 年前

    尽管我不愿意读OpenGL红皮书,但我仍然在做,因为它是 专为初学者设计的教程和/或文档并不能完全替代一本书,尽管它非常重要。为了证明自己的正当性:)

    现在,有一个使用多采样的抗锯齿示例,其中涉及 glEnable(GL_MULTISAMPLE);

    我正在使用Qt,得到一个编译错误,因为GL_MULTISAMPLE是一个未声明的标识符。我目前认为原因如下:

    • 对于一些实现,包括Qt附带的实现,GL_MULTISAMPLE没有定义。
    • 它不在GL/GL.h或GL/glu.h中,而是在某些其他标题中,该标题不包括在 <QGLWidget> 或者不带Qt
    • 它已过时/弃用

    以上原因之一正确吗?如果没有,我没有它的原因是什么?我怎样才能得到它?提前谢谢

    4 回复  |  直到 14 年前
        1
  •  4
  •   wkl    14 年前

    GL_MULTISAMPLE 是一个 以前是OpenGL的扩展,直到1.3版本,它是否实现取决于硬件/驱动程序/供应商的实现。你可能真的想用 GL_MULTISAMPLE_ARB 相反。如果您在Windows上,平台提供的OpenGL头文件将不包含此宏。

    另见:

    RA的响应将简化扩展处理-我更喜欢使用 GLee 我自己,但它们几乎是可以互换的(GLee做了lazy init,它帮助我解决了Solaris上的一个关键问题),但是GLEW保持了更新(GLee现在已经过时了,Kos已经引起了我的注意)。

        2
  •  6
  •   ʀᴏʙ    13 年前

    既然你说你在使用Qt的库,那么GLEW等可能就不必要了,因为Qt会为你包装和绑定扩展。

    如果你在使用 QGLWidget 这特别容易。支票 this example 与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) 你喜欢的。一定要加 glEnable(GL_MULTISAMPLE) 在渲染场景之前。

        3
  •  3
  •   ROAR    14 年前
        4
  •  1
  •   angleto    14 年前

    GLúu MULTISAMPLE是在glext.h中定义的,glext.h包含在一些linux包中:glew、gtkglext或带有一些opengl驱动程序(请看这里: http://www.opengl.org/registry/#headers ).

    推荐文章