diff --git a/CMakeLists.txt b/CMakeLists.txt index 1fcfcb4..8dfe93e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ add_executable(Lesson10 Lesson10.cpp) set_target_properties(Lesson10 PROPERTIES CXX_STANDARD 98 WIN32_EXECUTABLE ON) -target_link_libraries(Lesson10 SDL3::SDL3 OpenGL::GL OpenGL::GLU) +target_link_libraries(Lesson10 SDL3::SDL3 OpenGL::GL) target_compile_options(Lesson10 PRIVATE $<$:-Wall -Wextra -pedantic>) if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") diff --git a/Lesson10.cpp b/Lesson10.cpp index 2de8721..729d6c8 100644 --- a/Lesson10.cpp +++ b/Lesson10.cpp @@ -9,14 +9,10 @@ #include // Math Library Header File #include // Header File For Standard Input/Output #include -#include -#include -#include // Header File For The OpenGL32 Library -#ifdef __APPLE__ -#include // Header File For The GLu32 Library -#else -#include // Header File For The GLu32 Library -#endif +#include +#include +#define GL_GLEXT_PROTOTYPES +#include // Header File For The OpenGL32 Library SDL_Window* hWnd=NULL; // Holds Our Window Handle SDL_GLContext hRC=NULL; // Permanent Rendering Context @@ -171,13 +167,31 @@ int LoadGLTextures() // Load Bitmaps And Conv glBindTexture(GL_TEXTURE_2D, texture[2]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST); - gluBuild2DMipmaps(GL_TEXTURE_2D, 3, TextureImage->w, TextureImage->h, GL_BGR, GL_UNSIGNED_BYTE, TextureImage->pixels); + glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage->w, TextureImage->h, 0, GL_BGR, GL_UNSIGNED_BYTE, TextureImage->pixels); + glGenerateMipmap(GL_TEXTURE_2D); } SDL_DestroySurface(TextureImage); // Free The Image Structure return Status; // Return The Status } +static void gluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar) +{ + double h = 1.0 / tan(fovy * (M_PI / 180.0) * 0.5); + double w = h / aspect; + double invcliprng = 1.0 / (zFar - zNear); + double z = -(zFar + zNear) * invcliprng; + double z2 = -(2.0 * zFar * zNear) * invcliprng; + double mtx[16] = + { + w, 0.0, 0.0, 0.0, + 0.0, h, 0.0, 0.0, + 0.0, 0.0, z, -1.0, + 0.0, 0.0, z2, 0.0 + }; + glLoadMatrixd(mtx); +} + GLvoid ReSizeGLScene(GLsizei width, GLsizei height) // Resize And Initialize The GL Window { if (height==0) // Prevent A Divide By Zero By