私はOpenGLコードをMain()から、必要に応じて3Dグラフィックスを扱う特定のクラスに移動しようとしています。以前は、私のmain.cppファイルのトップは次のようになっていました:#error gl.h include glew.h
#define GLEW_STATIC
#include <GL/glew.h>
#include <SFML/Graphics.hpp>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Game.h"
これで十分でした。私が試みたのは、すべてのOpenGL関連のコードをGame
クラスのメソッドに移動することでした。だから私はGame.hのトップは、次のようになりますように、上から#define GLEW_STATIC
と#include <GL/glew.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:
また、私は何もGLEW前SFMLが含まれていないことを確認してくださいしようとする試みで、main.cppににこの設定を試してみました。
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Game.h"
#include <SFML/Graphics.hpp>
残念ながら、それは役に立たない(私がここで言及していないものは何も含まれていない)。
glew.hをmain.cppから1回、game.hから1回2回#includeしていますか?私はglew.hがそのために(ガードも#pragmaも)書かれていないと思うので、あなた自身のガードを追加したり、それを一度だけ含めなければならない。 – Rup
@Rup GLEWにはガードが#含まれています。 gl.hを含む他のライブラリです。おそらくSFML。 –
いいえ、main.cppから削除します。私はそれがSFMLかもしれないと思いますが、あなたが明示的にそのファイルをインクルードすることを望むいくつかのチュートリアルがあるので、gl.hを自動的には含んでいないという印象を受けました。私はそれを耳にして、それが何かを解決するかどうかを見てみましょう。でも、少なくとも私の現在の設定では、main.cppでSFMLを使う必要があります。 – GarrickW