glew가 작동하는 데 약간의 문제가 있습니다. glew를 초기화 할 때 오류가 발생합니다 : 누락 된 GL 버전. 나는 컨텍스트도 만들 수 없다 : OpenGL이 초기화되지 않았다. 이 내 코드입니다 :OpenGL을 초기화 할 수 없습니다.
#include <GL\glew.h>
#include <GL\GLU.h>
#include <SDL2\SDL.h>
#include <SDL2\SDL_opengl.h>
#include <iostream>
#undef main
SDL_GLContext context;
SDL_Renderer * renderer;
SDL_Window * window;
int main(int argc, char *argv[]) {
//init SDL
if (SDL_Init(SDL_INIT_EVERYTHING) != 0) {
fprintf(stderr, "\n> Unable to initialize SDL: %s\n", SDL_GetError());
}
window = SDL_CreateWindow("Cri Engine 3D", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 800, 600, SDL_WINDOW_SHOWN);
if (window == nullptr)
{
printf("> Window could not be created! SDL Error: %s\n", SDL_GetError());
}
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
context = SDL_GL_CreateContext(window);
SDL_GL_MakeCurrent(window, context);
if (context == NULL) {
printf("> OpenGL context could not be created! SDL Error: %s\n", SDL_GetError());
}
//Glew
glewExperimental = GL_TRUE;
GLenum err = glewInit();
if (GLEW_OK != err) {
fprintf(stderr, "> Error: %s\n", glewGetErrorString(err));
}
fprintf(stdout, "> Using GLEW %s\n", glewGetString(GLEW_VERSION));
glViewport(0, 0, 800, 600);
SDL_Quit();
return 0;
}
이 내가 (이 순서대로)를 사용하여 링커 설정은 다음과 같습니다 glew32.lib, glu32.lib, opengl32.lib, SDL2.lib, SDL2main.lib.
라이브러리가 올바르게 포함되어 있습니다. 추신 : 내 첫 번째 게시물, 일부 정보를 놓치고있다면 말해줘!
정말 고마워요, 일하기까지 너무 오래 노력했습니다. SDL_CreateWindow()에 플래그를 추가하면 트릭을 수행합니다. 나는 코드가 지저분하다는 것을 안다. (나는 오랫동안 그 코드를 어지럽 혔기 때문에). – Chris
'SDL_Quit' 부분은 꽤 논쟁의 여지가 있습니다 (예 : valgrind). 'SDL_opengl.h'는 잘못되었습니다. 결코 포함되지 않습니다; 그것은 gl.h의 대체물이다. – keltar
@keltar 좋은 점, 나는 대답을 편집했습니다. – HolyBlackCat