Итак, я пытаюсь переместить мой код OpenGL из Main() в определенный класс, который будет обрабатывать 3D-графики только в случае необходимости. Раньше верхняя часть моего файла main.cpp выглядела так:#error gl.h включено до glew.h
#define GLEW_STATIC
#include <GL/glew.h>
#include <SFML/Graphics.hpp>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Game.h"
Это работало достаточно хорошо. То, что я пытался сделать, это переместить весь код, соответствующий OpenGL, в методы класса Game
. Так что я удалил #define GLEW_STATIC
и #include <GL/glew.h>
из сказанного выше, и поместить их в Game.h, таким образом, что верхняя часть Game.h теперь выглядит следующим образом:
#define GLEW_STATIC
#include <GL/glew.h>
#include <SFML/Graphics.hpp>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Environment.h"
Когда я пытаюсь скомпилировать, я получаю ошибку в заголовке, #error gl.h included before glew.h
.
Почему это происходит, и как я могу использовать код OpenGL (почти) полностью внутри функций определенного класса без этого?
EDIT:
Я также пробовал эту конфигурацию в main.cpp, в попытке убедиться, что ничего не включает в себя SFML перед тем GLEW.
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Game.h"
#include <SFML/Graphics.hpp>
К сожалению, это не помогает (нет ничего другого, что я не упоминаю здесь).
Означает ли это, что вы теперь # включаете glew.h дважды, один раз из main.cpp и один раз из game.h? Я предполагаю, что glew.h не написано для этого (либо без охранников, либо с #pragma), поэтому вам придется либо добавить своих собственных охранников, либо позаботиться о его включении ровно один раз. – Rup
@Rup GLEW имеет #include охранников. Это еще одна библиотека, которая включает gl.h. Возможно, SFML. –
Нет, я удаляю его из main.cpp. Я предполагаю, что это может быть SFML, но у меня создалось впечатление, что он не включал автоматически gl.h, так как для него есть некоторые учебные пособия, которые хотят, чтобы вы явно включили этот файл. Я буду разбираться с этим и посмотреть, что это все решает, но мне все еще нужно использовать SFML в main.cpp, по крайней мере, с моей текущей настройкой. – GarrickW