This commit is contained in:
Ben
2019-01-10 18:12:41 +00:00
parent a867c8d6e9
commit a0803b439e
5 changed files with 175 additions and 0 deletions

4
OpenGL/cube/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
CMakeFiles/
cmake_install.cmake
CMakeCache.txt
Makefile

View File

@@ -0,0 +1,46 @@
cmake_minimum_required(VERSION 3.7)
project(gl-cube)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} CMakeModules/)
cmake_policy(SET CMP0037 OLD)
set(executable cube.a)
set(SrcDIR ./src)
set(IncludeDIR ./include)
find_package(SDL2 REQUIRED)
find_package(SDL2_image REQUIRED)
find_package(PNG REQUIRED)
set(THREADS_PREFER_PTHREAD_FLAD ON)
find_package(Threads REQUIRED)
find_package(OpenGL REQUIRED)
find_package(GLEW REQUIRED)
include_directories(${executable}
${SDL2_INCLUDE_DIR}
${SDL2_IMAGE_INCLUDE_DIR}
${GLEW_INCLUDE_DIRS}
${IncludeDIR}
)
file(GLOB_RECURSE SourceFiles
${SrcDIR}/*
)
add_executable(${executable} ${SourceFiles})
set_target_properties(${executable} PROPERTIES
CXX_STANDARD 17
CXX_EXTENSIONS OFF
)
target_link_libraries(${executable}
SDL2
SDL2_image
PNG::PNG
Threads::Threads
OpenGL::OpenGL
OpenGL::GL
GLEW
)

View File

@@ -0,0 +1,67 @@
FIND_PATH(SDL2_IMAGE_INCLUDE_DIR SDL_image.h
HINTS
${SDL2}
$ENV{SDL2}
$ENV{SDL2_IMAGE}
PATH_SUFFIXES include/SDL2 include SDL2
i686-w64-mingw32/include/SDL2
x86_64-w64-mingw32/include/SDL2
PATHS
~/Library/Frameworks
/Library/Frameworks
/usr/local/include/SDL2
/usr/include/SDL2
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt
)
# Lookup the 64 bit libs on x64
IF(CMAKE_SIZEOF_VOID_P EQUAL 8)
FIND_LIBRARY(SDL2_IMAGE_LIBRARY_TEMP
NAMES SDL2_image
HINTS
${SDL2}
$ENV{SDL2}
$ENV{SDL2_IMAGE}
PATH_SUFFIXES lib64 lib
lib/x64
x86_64-w64-mingw32/lib
PATHS
/sw
/opt/local
/opt/csw
/opt
)
# On 32bit build find the 32bit libs
ELSE(CMAKE_SIZEOF_VOID_P EQUAL 8)
FIND_LIBRARY(SDL2_IMAGE_LIBRARY_TEMP
NAMES SDL2_image
HINTS
${SDL2}
$ENV{SDL2}
$ENV{SDL2_IMAGE}
PATH_SUFFIXES lib
lib/x86
i686-w64-mingw32/lib
PATHS
/sw
/opt/local
/opt/csw
/opt
)
ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 8)
SET(SDL2_IMAGE_FOUND "NO")
IF(SDL2_IMAGE_LIBRARY_TEMP)
# Set the final string here so the GUI reflects the final state.
SET(SDL2_IMAGE_LIBRARY ${SDL2_IMAGE_LIBRARY_TEMP} CACHE STRING "Where the SDL2_image Library can be found")
# Set the temp variable to INTERNAL so it is not seen in the CMake GUI
SET(SDL2_IMAGE_LIBRARY_TEMP "${SDL2_IMAGE_LIBRARY_TEMP}" CACHE INTERNAL "")
SET(SDL2_IMAGE_FOUND "YES")
ENDIF(SDL2_IMAGE_LIBRARY_TEMP)
INCLUDE(FindPackageHandleStandardArgs)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2_IMAGE REQUIRED_VARS SDL2_IMAGE_LIBRARY SDL2_IMAGE_INCLUDE_DIR)

BIN
OpenGL/cube/cube.a Executable file

Binary file not shown.

58
OpenGL/cube/src/main.cpp Normal file
View File

@@ -0,0 +1,58 @@
#include <iostream>
#include <SDL2/SDL.h>
#include <GL/glew.h>
class Game {
public:
SDL_Window* window = nullptr;
SDL_GLContext glContext = nullptr;
bool isWindowClosed = true;
};
int main(int argc, char** argv) {
Game* game = new Game();
SDL_Init(SDL_INIT_EVERYTHING);
SDL_GL_SetSwapInterval(0);
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 32);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
game->window = SDL_CreateWindow("GL CUBE",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
400, 400,
SDL_WINDOW_OPENGL);
game->glContext = SDL_GL_CreateContext(game->window);
GLenum GLEWStatus = glewInit();
if (GLEWStatus != GLEW_OK) {
std::cerr << "FAILED TO INITALIZE GLEW" << std::endl;
}
// SDL_WarpMouseInWindow(m_window, width / 2, height / 2);
// SDL_SetRelativeMouseMode(SDL_TRUE);
game->isWindowClosed = false;
glClearColor(0.1f, 0.45f, 0.9f, 1.0f);
SDL_Event event;
while (!game->isWindowClosed) {
glClear(GL_COLOR_BUFFER_BIT);
while (SDL_PollEvent(&event) != 0)
if (event.key.keysym.sym == SDLK_ESCAPE)
game->isWindowClosed = true;
SDL_GL_SwapWindow(game->window);
}
game->isWindowClosed = true;
SDL_GL_DeleteContext(game->glContext);
SDL_DestroyWindow(game->window);
SDL_Quit();
}