Использование Glew в нескольких файлах - PullRequest
1 голос
/ 07 марта 2011

Почему-то я не могу получить 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, например.

Как мне также получить glew.h в GameObject?

Ответы [ 2 ]

0 голосов
/ 08 марта 2011

Я сам сделал это немного по-другому:

Я создал предварительно скомпилированный заголовок с glew и freeglut.Это выглядит так:

#ifndef _STDAFX_H_
#define _STDAFX_H_

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

#endif

Может ли кто-нибудь подтвердить, является ли это надежным и хорошо известным методом для этого?

0 голосов
/ 07 марта 2011

Должно быть ошибка в 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.

По-видимому, неправильно делает тесты вне защитного ограждения множественного включения заголовка.1010 *

Я переключился с glew на GLee в первый раз, когда запустил трассировку OpenGL (собственно glslDevil) и увидел, что glew вызывал glGetString(GL_EXTENSIONS) сотни раз при запуске.

...