diff --git a/.gitignore b/.gitignore index 4e795fc..3d986ca 100644 --- a/.gitignore +++ b/.gitignore @@ -27,7 +27,10 @@ libs/ compile_commands.json *.o +*.obj game game.exe +game-vc.* +vc140.pdb diff --git a/compile_linux.sh b/compile_linux.sh index cdebb02..f61eb97 100755 --- a/compile_linux.sh +++ b/compile_linux.sh @@ -41,7 +41,7 @@ ccache g++ -Wall -D_REENTRANT -g -Isfw -c sfw/core/dir_access.cpp -o sfw/core/di ccache g++ -Wall -D_REENTRANT -g -Isfw -c sfw/core/pool_vector.cpp -o sfw/core/pool_vector.o ccache g++ -Wall -D_REENTRANT -g -Isfw -c sfw/core/pool_allocator.cpp -o sfw/core/pool_allocator.o ccache g++ -Wall -D_REENTRANT -g -Isfw -c sfw/core/mutex.cpp -o sfw/core/mutex.o -ccache g++ -Wall -D_REENTRANT -g -Isfw -c sfw/core/sfw_time.cpp -o sfw/core/SFWTime.o +ccache g++ -Wall -D_REENTRANT -g -Isfw -c sfw/core/sfw_time.cpp -o sfw/core/sfw_time.o ccache g++ -Wall -D_REENTRANT -g -Isfw -c sfw/core/sfw_core.cpp -o sfw/core/sfw_core.o @@ -58,7 +58,7 @@ ccache g++ -Wall -D_REENTRANT -g -Isfw -c sfw/object/resource.cpp -o sfw/object/ ccache g++ -Wall -D_REENTRANT -g -Isfw -c sfw/render_core/application.cpp -o sfw/render_core/application.o ccache g++ -Wall -D_REENTRANT -g -Isfw -c sfw/render_core/scene.cpp -o sfw/render_core/scene.o -ccache g++ -Wall -D_REENTRANT -g -Isfw -c sfw/render_core/app_window.cpp -o sfw/render_core/window.o +ccache g++ -Wall -D_REENTRANT -g -Isfw -c sfw/render_core/app_window.cpp -o sfw/render_core/app_window.o ccache g++ -Wall -D_REENTRANT -g -Isfw -c sfw/render_core/shader.cpp -o sfw/render_core/shader.o ccache g++ -Wall -D_REENTRANT -g -Isfw -c sfw/render_core/material.cpp -o sfw/render_core/material.o @@ -106,7 +106,7 @@ ccache g++ -Wall -lm -ldl -lpthread -lX11 -D_REENTRANT -g sfw/core/aabb.o sfw/c sfw/core/ustring.o sfw/core/string_name.o \ sfw/core/vector2.o sfw/core/vector2i.o sfw/core/vector3.o \ sfw/core/vector3i.o sfw/core/vector4.o sfw/core/vector4i.o \ - sfw/core/pool_vector.o sfw/core/pool_allocator.o sfw/core/mutex.o sfw/core/SFWTime.o \ + sfw/core/pool_vector.o sfw/core/pool_allocator.o sfw/core/mutex.o sfw/core/sfw_time.o \ sfw/core/dir_access.o sfw/core/file_access.o \ sfw/core/sfw_core.o \ sfw/object/object.o sfw/object/reference.o sfw/object/core_string_names.o \ @@ -114,7 +114,7 @@ ccache g++ -Wall -lm -ldl -lpthread -lX11 -D_REENTRANT -g sfw/core/aabb.o sfw/c sfw/object/array.o sfw/object/dictionary.o sfw/object/ref_ptr.o \ sfw/object/resource.o \ sfw/render_core/image.o sfw/render_core/render_state.o \ - sfw/render_core/application.o sfw/render_core/scene.o sfw/render_core/window.o \ + sfw/render_core/application.o sfw/render_core/scene.o sfw/render_core/app_window.o \ sfw/render_core/shader.o sfw/render_core/material.o sfw/render_core/mesh.o \ sfw/render_core/mesh_utils.o sfw/render_core/texture.o \ sfw/render_core/input_event.o sfw/render_core/input_map.o \ diff --git a/compile_vs.bat b/compile_vs.bat new file mode 100644 index 0000000..4dc08df --- /dev/null +++ b/compile_vs.bat @@ -0,0 +1,151 @@ +@echo off + +if not defined DevEnvDir ( + call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64 +) + +rem debug: /Zi (== -g) + +rem TODO reentrant is probably not needed + +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/aabb.cpp /Fo:sfw/core/aabb.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/basis.cpp /Fo:sfw/core/basis.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/color.cpp /Fo:sfw/core/color.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/face3.cpp /Fo:sfw/core/face3.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/logger.cpp /Fo:sfw/core/logger.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/math_funcs.cpp /Fo:sfw/core/math_funcs.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/memory.cpp /Fo:sfw/core/memory.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/pcg.cpp /Fo:sfw/core/pcg.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/plane.cpp /Fo:sfw/core/plane.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/projection.cpp /Fo:sfw/core/projection.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/quaternion.cpp /Fo:sfw/core/quaternion.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/random_pcg.cpp /Fo:sfw/core/random_pcg.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/rect2.cpp /Fo:sfw/core/rect2.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/rect2i.cpp /Fo:sfw/core/rect2i.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/safe_refcount.cpp /Fo:sfw/core/safe_refcount.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/transform_2d.cpp /Fo:sfw/core/transform_2d.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/transform.cpp /Fo:sfw/core/transform.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/ustring.cpp /Fo:sfw/core/ustring.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/string_name.cpp /Fo:sfw/core/string_name.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/vector2.cpp /Fo:sfw/core/vector2.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/vector2i.cpp /Fo:sfw/core/vector2i.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/vector3.cpp /Fo:sfw/core/vector3.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/vector3i.cpp /Fo:sfw/core/vector3i.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/vector4.cpp /Fo:sfw/core/vector4.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/vector4i.cpp /Fo:sfw/core/vector4i.obj + +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/file_access.cpp /Fo:sfw/core/file_access.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/dir_access.cpp /Fo:sfw/core/dir_access.obj + +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/pool_vector.cpp /Fo:sfw/core/pool_vector.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/pool_allocator.cpp /Fo:sfw/core/pool_allocator.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/mutex.cpp /Fo:sfw/core/mutex.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/sfw_time.cpp /Fo:sfw/core/sfw_time.obj + +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/core/sfw_core.cpp /Fo:sfw/core/sfw_core.obj + +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/object/object.cpp /Fo:sfw/object/object.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/object/reference.cpp /Fo:sfw/object/reference.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/object/core_string_names.cpp /Fo:sfw/object/core_string_names.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/object/variant.cpp /Fo:sfw/object/variant.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/object/variant_op.cpp /Fo:sfw/object/variant_op.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/object/psignal.cpp /Fo:sfw/object/psignal.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/object/array.cpp /Fo:sfw/object/array.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/object/dictionary.cpp /Fo:sfw/object/dictionary.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/object/ref_ptr.cpp /Fo:sfw/object/ref_ptr.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/object/resource.cpp /Fo:sfw/object/resource.obj + + +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/application.cpp /Fo:sfw/render_core/application.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/scene.cpp /Fo:sfw/render_core/scene.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/app_window.cpp /Fo:sfw/render_core/app_window.obj + + +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/shader.cpp /Fo:sfw/render_core/shader.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/material.cpp /Fo:sfw/render_core/material.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/mesh.cpp /Fo:sfw/render_core/mesh.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/mesh_utils.cpp /Fo:sfw/render_core/mesh_utils.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/texture.cpp /Fo:sfw/render_core/texture.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/image.cpp /Fo:sfw/render_core/image.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/render_state.cpp /Fo:sfw/render_core/render_state.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/keyboard.cpp /Fo:sfw/render_core/keyboard.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/input_event.cpp /Fo:sfw/render_core/input_event.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/input_map.cpp /Fo:sfw/render_core/input_map.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/input.cpp /Fo:sfw/render_core/input.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/shortcut.cpp /Fo:sfw/render_core/shortcut.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/font.cpp /Fo:sfw/render_core/font.obj + +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/color_material_2d.cpp /Fo:sfw/render_core/color_material_2d.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/color_material.cpp /Fo:sfw/render_core/color_material.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/colored_material.cpp /Fo:sfw/render_core/colored_material.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/font_material.cpp /Fo:sfw/render_core/font_material.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/texture_material_2d.cpp /Fo:sfw/render_core/texture_material_2d.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/texture_material.cpp /Fo:sfw/render_core/texture_material.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_core/transparent_texture_material.cpp /Fo:sfw/render_core/transparent_texture_material.obj + +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_immediate/renderer.cpp /Fo:sfw/render_immediate/renderer.obj + +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_objects/camera_3d.cpp /Fo:sfw/render_objects/camera_3d.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_objects/object_3d.cpp /Fo:sfw/render_objects/object_3d.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_objects/mesh_instance_3d.cpp /Fo:sfw/render_objects/mesh_instance_3d.obj + +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_objects/camera_2d.cpp /Fo:sfw/render_objects/camera_2d.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_objects/mesh_instance_2d.cpp /Fo:sfw/render_objects/mesh_instance_2d.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_objects/object_2d.cpp /Fo:sfw/render_objects/object_2d.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_objects/sprite.cpp /Fo:sfw/render_objects/sprite.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_objects/tile_map.cpp /Fo:sfw/render_objects/tile_map.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/render_objects/text_2d.cpp /Fo:sfw/render_objects/text_2d.obj + +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/game_scene.cpp /Fo:sfw/game_scene.obj +cl /D_REENTRANT /EHsc /Zi /Isfw /c sfw/main.cpp /Fo:sfw/main.obj + + + + +rem cl main.cpp shader.cpp material.cpp mesh.cpp mesh_instance.cpp mesh_utils.cpp texture.cpp camera.cpp application.cpp scene.cpp game_scene.cpp object_2d.cpp tile_map.cpp sprite.cpp ^ +rem libs\glad\src\glad.c /Febin/game-vc.exe ^ +rem /EHsc ^ +rem /Ilibs\SDL2-VC\include ^ +rem /Ilibs\glad\include ^ +rem /link /LIBPATH:libs\SDL2-VC\lib SDL2.lib SDL2main.lib opengl32.lib ^ +rem /SUBSYSTEM:CONSOLE + + + + +cl /D_REENTRANT /Zi ^ + /EHsc ^ + /Fegame-vc.exe ^ + sfw/core/aabb.obj sfw/core/basis.obj sfw/core/color.obj ^ + sfw/core/face3.obj sfw/core/logger.obj sfw/core/math_funcs.obj ^ + sfw/core/memory.obj sfw/core/pcg.obj sfw/core/plane.obj sfw/core/projection.obj sfw/core/quaternion.obj sfw/core/random_pcg.obj ^ + sfw/core/rect2.obj sfw/core/rect2i.obj sfw/core/safe_refcount.obj sfw/core/transform_2d.obj sfw/core/transform.obj ^ + sfw/core/ustring.obj sfw/core/string_name.obj ^ + sfw/core/vector2.obj sfw/core/vector2i.obj sfw/core/vector3.obj ^ + sfw/core/vector3i.obj sfw/core/vector4.obj sfw/core/vector4i.obj ^ + sfw/core/pool_vector.obj sfw/core/pool_allocator.obj sfw/core/mutex.obj sfw/core/sfw_time.obj ^ + sfw/core/dir_access.obj sfw/core/file_access.obj ^ + sfw/core/sfw_core.obj ^ + sfw/object/object.obj sfw/object/reference.obj sfw/object/core_string_names.obj ^ + sfw/object/variant.obj sfw/object/variant_op.obj sfw/object/psignal.obj ^ + sfw/object/array.obj sfw/object/dictionary.obj sfw/object/ref_ptr.obj ^ + sfw/object/resource.obj ^ + sfw/render_core/image.obj sfw/render_core/render_state.obj ^ + sfw/render_core/application.obj sfw/render_core/scene.obj sfw/render_core/app_window.obj ^ + sfw/render_core/shader.obj sfw/render_core/material.obj sfw/render_core/mesh.obj ^ + sfw/render_core/mesh_utils.obj sfw/render_core/texture.obj ^ + sfw/render_core/input_event.obj sfw/render_core/input_map.obj ^ + sfw/render_core/input.obj sfw/render_core/shortcut.obj ^ + sfw/render_core/keyboard.obj sfw/render_core/font.obj ^ + sfw/render_core/color_material_2d.obj sfw/render_core/color_material.obj ^ + sfw/render_core/colored_material.obj sfw/render_core/font_material.obj ^ + sfw/render_core/texture_material_2d.obj sfw/render_core/texture_material.obj ^ + sfw/render_core/transparent_texture_material.obj ^ + sfw/render_immediate/renderer.obj ^ + sfw/render_objects/camera_3d.obj sfw/render_objects/object_3d.obj sfw/render_objects/mesh_instance_3d.obj ^ + sfw/render_objects/object_2d.obj ^ + sfw/render_objects/sprite.obj sfw/render_objects/tile_map.obj ^ + sfw/render_objects/camera_2d.obj sfw/render_objects/mesh_instance_2d.obj ^ + sfw/render_objects/text_2d.obj ^ + sfw/game_scene.obj sfw/main.obj ^ + /SUBSYSTEM:CONSOLE diff --git a/sfw/core/dir_access.cpp b/sfw/core/dir_access.cpp index 7266752..c362816 100644 --- a/sfw/core/dir_access.cpp +++ b/sfw/core/dir_access.cpp @@ -45,6 +45,10 @@ #endif +#ifdef _MSC_VER +#pragma comment(lib, "Shlwapi") +#endif + #if defined(_WIN64) || defined(_WIN32) bool DirAccess::is_link(String p_file) { diff --git a/sfw/core/error_macros.h b/sfw/core/error_macros.h index 55e7344..141adf4 100644 --- a/sfw/core/error_macros.h +++ b/sfw/core/error_macros.h @@ -249,7 +249,7 @@ _FORCE_INLINE_ void _RLOG_MACRO_TEMPLATE_FUNC(STR str, A p0, B p1, C p2, D p3, E RLogger::log_error(__FUNCTION__, __FILE__, __LINE__, msg); \ GENERATE_TRAP -#define CRASH_NOW(msg) \ +#define CRASH_NOW() \ RLogger::log_error(__FUNCTION__, __FILE__, __LINE__, "CRASH!"); \ GENERATE_TRAP diff --git a/sfw/core/memory.cpp b/sfw/core/memory.cpp index 56c69c0..9b90dd8 100644 --- a/sfw/core/memory.cpp +++ b/sfw/core/memory.cpp @@ -23,15 +23,15 @@ void *operator new(size_t p_size, void *(*p_allocfunc)(size_t p_size)) { #ifdef _MSC_VER void operator delete(void *p_mem, const char *p_description) { - CRASH_NOW_MSG("Call to placement delete should not happen."); + CRASH_MSG("Call to placement delete should not happen."); } void operator delete(void *p_mem, void *(*p_allocfunc)(size_t p_size)) { - CRASH_NOW_MSG("Call to placement delete should not happen."); + CRASH_MSG("Call to placement delete should not happen."); } void operator delete(void *p_mem, void *p_pointer, size_t check, const char *p_description) { - CRASH_NOW_MSG("Call to placement delete should not happen."); + CRASH_MSG("Call to placement delete should not happen."); } #endif diff --git a/sfw/core/sfw_time.cpp b/sfw/core/sfw_time.cpp index f2f00c6..e5d12af 100644 --- a/sfw/core/sfw_time.cpp +++ b/sfw/core/sfw_time.cpp @@ -4,9 +4,7 @@ //--STRIP #include "core/sfw_time.h" -#include #include -#include #include //--STRIP @@ -14,6 +12,9 @@ #define WIN32_LEAN_AND_MEAN #include #include +#else +#include +#include #endif #if 0 @@ -120,8 +121,8 @@ static uint64_t nanotimer(uint64_t *out_freq) { } uint64_t SFWTime::time_ns() { - static __thread uint64_t epoch = 0; - static __thread uint64_t freq = 0; + static thread_local uint64_t epoch = 0; + static thread_local uint64_t freq = 0; if (!freq) { epoch = nanotimer(&freq); } diff --git a/sfw/render_core/3rd_glfw3.h b/sfw/render_core/3rd_glfw3.h index 5a92607..963535e 100644 --- a/sfw/render_core/3rd_glfw3.h +++ b/sfw/render_core/3rd_glfw3.h @@ -13574,7 +13574,7 @@ static _GLFWinitconfig _glfwInitHints = // Terminate the library // -static void terminate(void) +static void _glfw_terminate_(void) { int i; @@ -13775,7 +13775,7 @@ GLFWAPI int glfwInit(void) if (!_glfwPlatformInit()) { - terminate(); + _glfw_terminate_(); return GLFW_FALSE; } @@ -13783,7 +13783,7 @@ GLFWAPI int glfwInit(void) !_glfwPlatformCreateTls(&_glfw.errorSlot) || !_glfwPlatformCreateTls(&_glfw.contextSlot)) { - terminate(); + _glfw_terminate_(); return GLFW_FALSE; } @@ -13803,7 +13803,7 @@ GLFWAPI void glfwTerminate(void) if (!_glfw.initialized) return; - terminate(); + _glfw_terminate_(); } GLFWAPI void glfwInitHint(int hint, int value) diff --git a/sfw/render_core/app_window.cpp b/sfw/render_core/app_window.cpp index 9e7ba19..357a472 100644 --- a/sfw/render_core/app_window.cpp +++ b/sfw/render_core/app_window.cpp @@ -169,39 +169,37 @@ void AppWindow::window_hints(unsigned flags) { //glfwWindowHint( GLFW_COCOA_MENUBAR, GLFW_FALSE ); #endif -#ifdef __APPLE__ +#if defined(__APPLE__) /* We need to explicitly ask for a 3.2 context on OS X */ //glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); // osx //glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); // osx, 2:#version150,3:330 -#else + //according to the documentation, it must be GLFW_OPENGL_ANY_PROFILE. + //glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_ANY_PROFILE); +#elif defined(_WIN64) || defined(_WIN32) // Compute shaders need 4.5 otherwise. But... // According to the GLFW docs, the context version hint acts as a minimum version. // i.e, the context you actually get may be a higher or highest version (which is usually the case) + //glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); + //glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); + + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); + glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 1); + //according to the documentation, it must be GLFW_OPENGL_ANY_PROFILE. + glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_ANY_PROFILE); +#else glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); + glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API); #endif + #ifdef __APPLE__ glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); //osx #endif + //glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); //osx+ems glfwWindowHint(GLFW_STENCIL_BITS, 8); //osx glfwWindowHint(GLFW_OPENGL_DEBUG_CONTEXT, GL_TRUE); - //according to the documentation, it must be GLFW_OPENGL_ANY_PROFILE. - //glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_ANY_PROFILE); - glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API); - - /* - #if defined(_WIN64) || defined(_WIN32) - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); - #else - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); - SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES); - #endif - */ - + //glfwWindowHint( GLFW_RED_BITS, 8 ); //glfwWindowHint( GLFW_GREEN_BITS, 8 ); //glfwWindowHint( GLFW_BLUE_BITS, 8 );