1

どういうわけか、複数のヘッダーファイルでGlewを取得できません。GlがGLEWの前にすでに定義されていることについて不平を言っているだけです。

簡単に言うと、次のファイル構造があります。

  1. Program.hには、、、および
    が含まれます。<GL/glew.h><GL/freeglut.h>"SceneManager.h"
  2. SceneManager.h
    に含まれるもの:"GameObject.h"
  3. GameObject.hには次のもの
    が含まれます:<GL/glew.h><GL/freeglut.h>

freeglutがglewの前にあることは理解していますが、GL_BGRたとえば拡張機能が必要です。

GameObjectでを取得するにはどうすればよいglew.hですか?

4

2 に答える 2

0

のバグである必要がありますglew.h

代わりにGLeeを使用していますが、この問題はありません。GLeeのテストは次のようになります。

#ifndef __glee_h_
#define __glee_h_

#ifdef __gl_h_
    #error gl.h included before glee.h
#endif

#ifdef __glext_h_
    #error glext.h included before glee.h
#endif

#ifdef __wglext_h_
    #error wglext.h included before glee.h
#endif

#ifdef __glxext_h_
    #error glxext.h included before glee.h
#endif

//...
#endif /* !defined(__glee_h_) */

したがって、テストは最初にのみ実行さglee.hれます。

どうやら、ヘッダーの複数の包含ガードの外側でテストが不適切に行われているようです。

OpenGLトレース(実際にはglslDevil)を初めて実行したときに、glewからGLeeに切り替えたところ、glGetString(GL_EXTENSIONS)起動時にglewが何百回も呼び出しているのがわかりました。

于 2011-03-07T20:59:17.450 に答える
0

私は今、自分で少し違うことをしました:

glewとfreeglutを含むプリコンパイル済みヘッダーを作成しました。次のようになります。

#ifndef _STDAFX_H_
#define _STDAFX_H_

#include <GL/glew.h>
#include <GL/freeglut.h>

#endif

誰かがこれがしっかりしていてよく知られている方法であるかどうかを確認できますか?

于 2011-03-07T22:20:08.420 に答える