У меня есть некоторые проблемы, чтобы заставить мой 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.
Я уверен, что либреи включены правильно. PS: это мой первый пост, если мне не хватает информации, скажите мне!
Большое вам спасибо, я так долго пытался заставить его работать. Добавление флага в SDL_CreateWindow() выполнило трюк. Я знаю, что код грязный (потому что я так долго возился с ним). – Chris
Часть 'SDL_Quit' вполне спорна (например, valgrind); 'SDL_opengl.h' просто неправильно, он никогда не включается; это своего рода замена для 'gl.h'. – keltar
@ keltar Хорошие моменты, я отредактировал ответ. – HolyBlackCat