0

第 1 章のコードをテストしたところです ( OpenGL 4.0 Shading Language Cookbook ) 。

Qt5、qmake -tp vc chapter01.proをインストールしてから、vs2010で開きます。

ビルドして、次のような多くのエラーが発生しました。

1>D:\APP\Qt5\5.0.0\msvc2010\include\GLES2/gl2.h(38): error C2371: 'GLintptr' : redefinition; different basic types
1>          D:\OpenGL\glew-1.5.4\include\GL/glew.h(1615) : see declaration of 'GLintptr'
1>D:\APP\Qt5\5.0.0\msvc2010\include\GLES2/gl2.h(39): error C2371: 'GLsizeiptr' : redefinition; different basic types
1>          D:\OpenGL\glew-1.5.4\include\GL/glew.h(1614) : see declaration of 'GLsizeiptr'
1>D:\APP\Qt5\5.0.0\msvc2010\include\GLES2/gl2.h(96): warning C4005: 'GL_BLEND_EQUATION_RGB' : macro redefinition
1>          D:\OpenGL\glew-1.5.4\include\GL/glew.h(1666) : see previous definition of 'GL_BLEND_EQUATION_RGB'
1>D:\APP\Qt5\5.0.0\msvc2010\include\GLES2/gl2.h(474): error C2365: '__glewActiveTexture' : redefinition; previous definition was 'data variable'
1>          D:\OpenGL\glew-1.5.4\include\GL/glew.h(12027) : see declaration of '__glewActiveTexture'
1>D:\APP\Qt5\5.0.0\msvc2010\include\GLES2/gl2.h(475): error C2365: '__glewAttachShader' : redefinition; previous definition was 'data variable'

これらの問題を解決するにはどうすればよいですか?(コードリンクはこちら)

4

2 に答える 2

2

簡単な答え: GLEW のヘッダー ファイルのみをインクルードし、OpenGL ヘッダーはインクルードしないでください。

説明: GLEW のヘッダー ファイルは、OpenGL ヘッダー ファイルのすべてを効果的にインクルードし (GLES で試したことはありませんが、同じだと思います)、C プリプロセッサ マクロを介してすべての OpenGL エントリ ポイントを再定義します。これが、複数定義されたシンボルと型が表示される理由です。追加情報については、こちらを参照してください。

于 2013-02-06T13:52:19.607 に答える
1

確かに最良の答えではありませんが、私は本をチェックしました。

Qt のバージョンになると、この本は古くなっているようです。

たとえば、最近のバージョンの Qt (少なくともバージョン 4.7) では

したがって、本を読みやすくするために、Qt を 4.x (たとえば 4.8) ファミリにダウングレードすることを検討してください。OpenGl 要件に多くの変更がある可能性があるためです。特に Qt ビルドを使用している場合はそうです。さまざまな OpenGl ライブラリで構築されています。

別の解決策は、Qt をまったく必要としない更新されたソース コードを使用することです。

これは、David Wolff による OpenGL 4.0 Shading Language Cookbook のサンプル プログラムです。ソース コードは MS Visual Studio で動作するように更新され、Qt は不要になりました。

于 2013-02-07T12:41:13.033 に答える