7

OpenGLレッドブックを読むことは思いとどまりましたが、初心者向けに設計された唯一のであり、チュートリアルやドキュメントは非常に重要ですが、本の代わりにはなりません。自分を正当化するのはこれだけです:)

ここで、マルチサンプリングを使用したアンチエイリアシングの例があります。 glEnable(GL_MULTISAMPLE);

Qtを使用していますが、GL_MULTISAMPLEが宣言されていない識別子であるため、コンパイルエラーが発生します。現在、次の理由があります。

  • Qtに付属しているものを含む一部の実装では、GL_MULTISAMPLEが定義されていません。
  • GL/gl.hまたはGL/glu.hにはありませんが、Qtに含まれ<QGLWidget>ていない、またはQtに付属していない他のヘッダーにあります。
  • 廃止/非推奨です

上記の理由の1つは正しいですか?そうでない場合、それが私がそれを持っていない理由であり、どうすれば入手できますか?前もって感謝します

4

4 に答える 4

6

Qtのライブラリを使用していると言ったので、Qtは拡張機能をラップしてバインドするため、GLEWなどはおそらく必要ありません。

QGLWidgetを使用している場合は、特に簡単です。Qtに付属し、特に以下を定義するglwidget.cppファイルを使用するこの例を確認してください。GL_MULTISAMPLE

#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)シーンをレンダリングする前に、必ずpaintGL()関数を追加してください。

于 2012-02-23T11:18:01.883 に答える
4

GL_MULTISAMPLE は、 1.3まではOpenGLの拡張機能として使用されていました。実装されているかどうかは、ハードウェア/ドライバー/ベンダーの実装によって異なります。実際にGL_MULTISAMPLE_ARB代わりに使用することをお勧めします。Windowsを使用している場合、OpenGLヘッダーが提供するプラットフォームにはこのマクロは含まれません。

参照:

RAの応答は拡張機能の処理を簡素化します-私はGLee自分自身の使用を好みますが、それらはほとんど互換性があります(そして、GLeeはSolarisの重大な問題を修正するのに役立つ怠惰な初期化を行います)が、GLEWはより最新に保たれます(GLeeは現在古くなっています)コスがそれを私の注意を引いたこと。)

于 2010-11-17T18:03:30.777 に答える
3

拡張機能を支援するためのライブラリhttp://glew.sourceforge.net/

于 2010-11-17T17:57:46.280 に答える
1

GL_MULTISAMPLEはglext.h内で定義され、glext.hはいくつかのLinuxパッケージ(glew、gtkglext、またはいくつかのopenglドライバー)に含まれています(http://www.opengl.org/registry/#headersを参照してください)。

于 2010-11-17T18:19:55.313 に答える