Ich versuche also, meinen OpenGL-Code von Main () in eine bestimmte Klasse zu verschieben, die nur bei Bedarf mit der 3D-Grafik umgehen kann. Zuvor sah der Anfang meiner Datei main.cpp wie folgt aus:
%Vor% Das hat gut genug funktioniert. Ich habe versucht, den gesamten OpenGL-relevanten Code in Methoden der Klasse Game
zu verschieben. Also habe ich #define GLEW_STATIC
und #include <GL/glew.h>
von den obigen entfernt und sie in Game.h eingefügt, sodass der obere Teil von Game.h jetzt so aussieht:
Wenn ich versuche zu kompilieren, bekomme ich den Titelfehler #error gl.h included before glew.h
.
Warum passiert das und wie kann ich OpenGL-Code (fast) vollständig innerhalb der Funktionen einer bestimmten Klasse verwenden, ohne dass dies geschieht?
BEARBEITEN:
Ich habe auch diese Konfiguration in main.cpp versucht, um sicherzustellen, dass nichts SFML vor GLEW enthält.
%Vor%Leider hilft das nicht (es gibt nichts anderes, was ich hier nicht erwähne).
Einige andere Bibliotheken enthalten gl.h. Meine Vermutung wäre SFML. Stellen Sie sicher, dass Sie GLEW zuerst in Game.h einschließen und überprüfen Sie die Orte, an denen Sie Game.h einschließen, um sicherzustellen, dass Sie nicht SFML oder etwas anderes einschließen, das gl.h vor Game.h enthält.
Wenn Sie etwas wie:
haben %Vor%Es wird effektiv gl.h vor GLEW enthalten.
Ich glaube, ich hatte dieses Problem auch einmal. Es liegt an der Art und Weise, wie SFML (1.6?) Das OpenGL-Zeug enthält.
IIRC (war schon einige Zeit und ich brauche GLEW nicht mehr, seit ich zu SFML2 gewechselt habe), das liegt an SFML's Graphics.hpp, inklusive GLEW.h. Sollte nicht passieren, um Wachen zu enthalten, aber ich denke, mit einigen Versionen könnte dies noch passieren. Es könnte möglich sein, dass Sie den Header von GLEW komplett überspringen, da er ohnehin in SFML enthalten ist.
Welche Version von SFML laufen Sie? 1.6, 2.0 oder 2.0 mit der neuen API? Was ist der Grund für die Verwendung von GLEW? Etwas, das du in SFML vermisst? Vielleicht ist es etwas in der neuesten Version enthalten, so dass Sie es auch nicht enthalten müssen.
Tags und Links c++ include opengl sfml codeblocks