그래서 Main()에서 OpenGL 코드를 필요한 경우에만 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>
#include <SFML/Graphics.hpp>
#include <cstdlib>
#include <iostream>
#include <fstream>
#include "Environment.h"
내가 컴파일 할 때, 나는 제목 오류 : 그래서 Game.h의 상단이 지금처럼 보인다 있도록, 위의에서 #define GLEW_STATIC
및 #include <GL/glew.h>
을 제거하고 Game.h에 넣어 #error gl.h included before glew.h
.
왜 이런 일이 벌어지고 있는데, 어떻게 이런 일이 일어나지 않고 특정 클래스의 기능 안에서 OpenGL 코드를 사용할 수 있습니까?
편집 : 나는 또한 아무것도 GLEW 전에 SFML 포함되지 않습니다 있는지 확인하기위한 시도로, MAIN.CPP에서이 구성을 시도
.
#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에는 # 가드가 포함되어 있습니다. gl.h를 포함하는 다른 라이브러리입니다. 아마도 SFML. –
아니요, main.cpp에서 제거합니다. 나는 그것이 SFML일지도 모른다고 생각하지만, gl.h를 자동으로 포함하지 않는다는 인상을 받고있다. 왜냐하면 당신이 명시 적으로 그 파일을 포함하기를 원하는 튜토리얼이 있기 때문이다. 필자는 그걸 가지고 주위를 둘러보고 그 것이 해결되는지 살펴 보겠습니다.하지만 적어도 현재 설치시에는 main.cpp에서 SFML을 사용해야합니다. – GarrickW