OpenGL
This commit is contained in:
4
OpenGL/cube/.gitignore
vendored
Normal file
4
OpenGL/cube/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
CMakeFiles/
|
||||
cmake_install.cmake
|
||||
CMakeCache.txt
|
||||
Makefile
|
||||
46
OpenGL/cube/CMakeLists.txt
Normal file
46
OpenGL/cube/CMakeLists.txt
Normal 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
|
||||
)
|
||||
67
OpenGL/cube/CMakeModules/FindSDL2_image.cmake
Normal file
67
OpenGL/cube/CMakeModules/FindSDL2_image.cmake
Normal 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
BIN
OpenGL/cube/cube.a
Executable file
Binary file not shown.
58
OpenGL/cube/src/main.cpp
Normal file
58
OpenGL/cube/src/main.cpp
Normal 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();
|
||||
}
|
||||
Reference in New Issue
Block a user