Я следую этому учебнику для openGL вместе с SDL. Я слегка знаком с SDL и слегка опустил пальцы в openGL. Поэтому я читаю этот учебник, и все идет хорошо, пока я не попытаюсь на самом деле скомпилировать код ... Я использую Cmake для компиляции кода. Также важно отметить, что я только что вставил все заголовки и библиотеки glew со всеми библиотеками и заголовками SDL2.
Вот мой файл cmakelists-
cmake_minimum_required(VERSION 3.7)
project(opengl)
find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIRS})
add_executable(opengl src/main.cpp)
target_link_libraries(opengl ${SDL2_LIBRARIES})
Вот мой Файл SDL2-Config.cmake-
set(SDL2_INCLUDE_DIRS "${CMAKE_CURRENT_LIST_DIR}/include")
# Support both 32 and 64 bit builds
if (${CMAKE_SIZEOF_VOID_P} MATCHES 8)
set(SDL2_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/lib/x64/SDL2.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x64/SDL2main.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x64/glew32.lib;" )
else ()
set(SDL2_LIBRARIES "${CMAKE_CURRENT_LIST_DIR}/lib/x86/SDL2.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x86/SDL2main.lib;${CMAKE_CURRENT_LIST_DIR}/lib/x86/glew32.lib;")
endif ()
string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES)
и вот мой главный. cpp file-
#include <GL/glew.h>
#include <iostream>
#include <SDL.h>
#include "SDL_opengl.h"
#define GL3_PROTOTYPES 1
#undef main
int main()
{
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window = SDL_CreateWindow("My Game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 512, 512, SDL_WINDOW_OPENGL);
SDL_GLContext context = SDL_GL_CreateContext(window);
glewInit();
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetSwapInterval(1);
glewExperimental = GL_TRUE;
while(true){
//set color
glClearColor( 1.0, 0.0, 0.5, 1.0 );
// clear back buffer
glClear( GL_COLOR_BUFFER_BIT );
// swap back and front buffer
SDL_GL_SwapWindow(window);
}
return 0;
}
Теперь все это выглядит хорошо для меня, но я не эксперт.
Запутанная часть заключается в том, что такие функции glew, как glewInit (), среди прочих, работают нормально! Но когда дело доходит до компиляции кода, я сталкиваюсь с двумя неразрешенными внешними проблемами. вот код ошибки -
PS C:\C++Dev\SDLDEV\openGL\build> cmake --build .
Microsoft (R) Build Engine version 16.4.0+e901037fe for .NET Framework
Copyright (C) Microsoft Corporation. All rights reserved.
main.cpp
main.obj : error LNK2019: unresolved external symbol __imp_glClear referenced in function main [C:\C++Dev\SDLDEV\openGL
\build\opengl.vcxproj]
main.obj : error LNK2019: unresolved external symbol __imp_glClearColor referenced in function main [C:\C++Dev\SDLDEV\o
penGL\build\opengl.vcxproj]
C:\C++Dev\SDLDEV\openGL\build\Debug\opengl.exe : fatal error LNK1120: 2 unresolved externals [C:\C++Dev\SDLDEV\openGL\b
uild\opengl.vcxproj]
любая помощь очень ценится!