Поэтому я пытаюсь переместить свой код OpenGL из Main() в определенный класс, который будет обрабатывать 3D-графику только при необходимости. Раньше верхняя часть моего файла main.cpp выглядела так:
#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 (почти) полностью внутри функций определенного класса, чтобы этого не происходило?
РЕДАКТИРОВАТЬ:
Я также попробовал эту конфигурацию в main.cpp, пытаясь убедиться, что ничто не включает SFML до GLEW.
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Game.h"
#include <SFML/Graphics.hpp>
К сожалению, это не помогает (больше ничего не включено, о чем я здесь не упоминаю).
#error included here
в начало gl.h. Это должно дать вам ошибку с полной информацией о том, откуда произошло включение. - person Rup   schedule 20.12.2011