Quindi sto provando a spostare il mio codice OpenGL da Main() in una classe specifica che gestirà la grafica 3D solo quando necessario. In precedenza, la parte superiore del mio file main.cpp assomigliava a questo:#error gl.h incluso prima di glew.h
#define GLEW_STATIC
#include <GL/glew.h>
#include <SFML/Graphics.hpp>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Game.h"
Questo ha funzionato abbastanza bene. Quello che ho cercato di fare è stato spostare tutto il codice relativo a OpenGL in metodi della classe Game
. Così ho rimosso #define GLEW_STATIC
e #include <GL/glew.h>
da quanto sopra, e metterle in Game.h, in modo tale che la parte superiore della Game.h ora assomiglia a questo:
#define GLEW_STATIC
#include <GL/glew.h>
#include <SFML/Graphics.hpp>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Environment.h"
Quando provo a compilare, ottengo l'errore titolo, #error gl.h included before glew.h
.
Perché sta succedendo questo e come posso utilizzare il codice OpenGL (quasi) interamente all'interno delle funzioni di una classe specifica senza che ciò accada?
EDIT:
Ho anche provato questa configurazione in main.cpp, nel tentativo di assicurarsi che nulla comprende SFML prima GLEW.
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Game.h"
#include <SFML/Graphics.hpp>
Purtroppo, che non aiuta (non c'è niente altro essere inclusi che non sto menzionare qui).
Ciò significa che ora si include #include glew.h due volte, una volta da main.cpp e una volta da game.h? Immagino che glew.h non sia scritto per questo (né guardie né #pragma), quindi dovrai aggiungere le tue guardie o occuparti di includerlo esattamente una volta. – Rup
@Rup GLEW ha # include protezioni. È un'altra libreria che include gl.h. Forse SFML. –
No, lo rimuovo da main.cpp. Suppongo che potrebbe essere SFML, ma ho avuto l'impressione che non includesse automaticamente gl.h, dal momento che ci sono alcuni tutorial in giro che vogliono che tu includa esplicitamente quel file. Ci giocherò con questo e vedrò se questo risolva qualsiasi cosa - ma ho ancora bisogno di usare SFML in main.cpp, almeno con la mia attuale configurazione. – GarrickW