diff --git a/Makefile b/Makefile index 7b40cbb..69f14f4 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ OUTPUT = output.exe CPPSTD = c++17 default: - $(CC) -g *.cpp $(CFLAGS) $(DEPS) $(LINK) -std=$(CPPSTD) -static -static-libgcc -fno-keep-inline-dllexport -o $(OUTPUT) + $(CC) -g *.cpp $(CFLAGS) $(DEPS) $(LINK) -std=$(CPPSTD) -static -static-libgcc -fno-keep-inline-dllexport -Os -s -Wl,--build-id=none -o $(OUTPUT) run: default $(OUTPUT) diff --git a/grafikaKBT.vcxproj b/grafikaKBT.vcxproj index 403c19e..e8089fa 100644 --- a/grafikaKBT.vcxproj +++ b/grafikaKBT.vcxproj @@ -126,6 +126,8 @@ + + @@ -133,6 +135,8 @@ + + diff --git a/grafikaKBT.vcxproj.filters b/grafikaKBT.vcxproj.filters index 15876af..7b94c6c 100644 --- a/grafikaKBT.vcxproj.filters +++ b/grafikaKBT.vcxproj.filters @@ -33,6 +33,12 @@ Source Files + + Source Files + + + Source Files + @@ -50,6 +56,12 @@ Header Files + + Header Files + + + Header Files + diff --git a/lazik.cpp b/lazik.cpp index f7c564f..d40dc32 100644 --- a/lazik.cpp +++ b/lazik.cpp @@ -1,15 +1,21 @@ #include "lazik.hpp" -lazik::lazik(float x, float y, float z, const char* modelpath){ +//lazik::lazik(float x, float y, float z, const char* modelpath, const char* texturepath) { +lazik::lazik(float x, float y, float z, const char* modelpath) { this->c_x = x; this->c_y = y; this->c_z = z; this->modelpath = modelpath; + // this->texturepath = texturepath; timestampedCout("lazik.cpp: Zaladowano dane w konstruktorze.") } +// void lazik::passProgramID(GLuint programID) { +// this->programID = programID; +// } + void lazik::loadModel() { timestampedCout("lazik.cpp:"); @@ -18,6 +24,11 @@ void lazik::loadModel() { if (res) timestampedCout("Pomyslnie zaladowano model lazika.") else timestampedCout("Nie udalo sie zaladowac modelu lazika."); + //this->Texture = loadDDS(this->texturepath); + //timestampedCout("lazik.cpp: this->Texture = " << this->Texture); + //this->TextureID = glGetUniformLocation(this->programID, "myTextureSampler"); + //timestampedCout("lazik.cpp: this->TextureID = " << this->TextureID); + glGenBuffers(1, &vertexbuffer); glBindBuffer(GL_ARRAY_BUFFER, this->vertexbuffer); glBufferData(GL_ARRAY_BUFFER, this->vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW); @@ -30,6 +41,13 @@ void lazik::loadModel() { void lazik::draw() { + // glEnable(GL_TEXTURE_2D); + // // Bind our texture in Texture Unit 0 + // glActiveTexture(GL_TEXTURE0); + // glBindTexture(GL_TEXTURE_2D, Texture); + // // Set our "myTextureSampler" sampler to use Texture Unit 0 + // glUniform1i(TextureID, 0); + // 1st attribute buffer: vertices glEnableVertexAttribArray(0); glBindBuffer(GL_ARRAY_BUFFER, this->vertexbuffer); @@ -57,11 +75,19 @@ void lazik::draw() { // Draw vertices glDrawArrays(GL_TRIANGLES, 0, this->vertices.size()); + // glDisable(GL_TEXTURE_2D); + glDisableVertexAttribArray(0); glDisableVertexAttribArray(1); } +void lazik::unload(){ + glDeleteBuffers(1, &this->vertexbuffer); + glDeleteBuffers(1, &this->uvbuffer); + // glDeleteTextures(1, &this->Texture); +} + void lazik::moveX(float x){ // TODO: dodać timer do poniższych funkcji, aby czas przejścia z punktu A do B był uniezależniony od FPSów timestampedCout("dummy moveX"); diff --git a/lazik.hpp b/lazik.hpp index 8207c88..910320e 100644 --- a/lazik.hpp +++ b/lazik.hpp @@ -8,6 +8,8 @@ #include "timeh.hpp" #include "GL/glm/glm.hpp" #include "loadOBJ.h" +#include "texture.hpp" +#include "shader.hpp" class lazik { private: @@ -23,10 +25,17 @@ class lazik { GLuint vertexbuffer; GLuint uvbuffer; const char* modelpath; + //GLuint programID; + //GLuint Texture; + //GLuint TextureID; + //const char* texturepath; public: + // lazik(float x, float y, float z, const char* modelpath, const char* texturepath); lazik(float x, float y, float z, const char* modelpath); + //void passProgramID(GLuint programID); void loadModel(); void draw(); + void unload(); void moveX(float x); void moveY(float y); void moveZ(float z); diff --git a/main.cpp b/main.cpp index 306b8c1..3519a2a 100644 --- a/main.cpp +++ b/main.cpp @@ -31,6 +31,9 @@ #include "GL/glfw3.h" #include #include "timeh.hpp" +#include "texture.hpp" +#include "shader.hpp" + using namespace glm; @@ -44,7 +47,7 @@ using namespace glm; HPALETTE hPalette = NULL; -// Application name and instance storeage +// Application name and instance storage static LPCTSTR lpszAppName = "grafikaKBT"; static HINSTANCE hInstance; GLFWwindow* window; @@ -61,7 +64,7 @@ static GLsizei lastWidth; // Opis tekstury BITMAPINFOHEADER bitmapInfoHeader; // nagłówek obrazu unsigned char* bitmapData; // dane tekstury -unsigned int texture[2]; // obiekt tekstury +unsigned int texture[4]; // obiekt tekstury LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); @@ -77,7 +80,7 @@ std::time_t monitormodehelper; //Zmienne do ruchu ############################################## -float Foward = 0.0f; // Pozycja łazika w przód/tył +float Foward = 0.0f; // Pozycja łazika w przód/tył float Sides = 0.0f; // Pozycja łazika w lewo/prawo float Rotation = 0.0f; // Rotacja łazika (w stopniach) @@ -159,15 +162,13 @@ unsigned char* LoadBitmapFile(char* filename, BITMAPINFOHEADER* bitmapInfoHeader // otwiera plik w trybie "read binary" filePtr = fopen(filename, "rb"); - if (filePtr == NULL) - return NULL; + if (filePtr == NULL) return NULL; // wczytuje nagłówek pliku fread(&bitmapFileHeader, sizeof(BITMAPFILEHEADER), 1, filePtr); // sprawdza, czy jest to plik formatu BMP - if (bitmapFileHeader.bfType != BITMAP_ID) - { + if (bitmapFileHeader.bfType != BITMAP_ID) { fclose(filePtr); return NULL; } @@ -237,49 +238,401 @@ void SetDCPixelFormat(HDC hDC) { SetPixelFormat(hDC, nPixelFormat, &pfd); } -lazik user(10.0f, 0.0f, 0.0f, "res/models/lazik4.obj"); -plane mapa(0.0f, 0.0f, 0.0f, "res/models/mapka2.obj"); +void skrzynka(GLfloat k) { + glColor3d(0.8, 0.7, 0.3); + + + glEnable(GL_TEXTURE_2D); // Włącz teksturowanie + + glBindTexture(GL_TEXTURE_2D, texture[0]); + glBegin(GL_QUADS); + glNormal3d(0, 0, 1); + glTexCoord2d(1.0, 1.0); glVertex3d( k, k, k); + glTexCoord2d(0.0, 1.0); glVertex3d(-k, k, k); + glTexCoord2d(0.0, 0.0); glVertex3d(-k, -k, k); + glTexCoord2d(1.0, 0.0); glVertex3d( k, -k, k); + glEnd(); + glBindTexture(GL_TEXTURE_2D, texture[1]); + glBegin(GL_QUADS); + glNormal3d(1, 0, 0); + glTexCoord2d(1.0, 1.0); glVertex3d(k, k, k); + glTexCoord2d(0.0, 1.0); glVertex3d(k, -k, k); + glTexCoord2d(0.0, 0.0); glVertex3d(k, -k, -k); + glTexCoord2d(1.0, 0.0); glVertex3d(k, k, -k); + glEnd(); + + glDisable(GL_TEXTURE_2D); // Wyłącz teksturowanie + + + glBegin(GL_QUADS); + glNormal3d(0, 0, -1); + glVertex3d( k, k, -k); + glVertex3d( k, -k, -k); + glVertex3d(-k, -k, -k); + glVertex3d(-k, k, -k); + + glNormal3d(-1, 0, 0); + glVertex3d(-k, k, -k); + glVertex3d(-k, -k, -k); + glVertex3d(-k, -k, k); + glVertex3d(-k, k, k); + + glNormal3d(0, 1, 0); + glVertex3d( k, k, k); + glVertex3d( k, k, -k); + glVertex3d(-k, k, -k); + glVertex3d(-k, k, k); + + glNormal3d(0, -1, 0); + glVertex3d( k, -k, k); + glVertex3d(-k, -k, k); + glVertex3d(-k, -k, -k); + glVertex3d( k, -k, -k); + glEnd(); +} + +void platforma(GLfloat xc, GLfloat yc, GLfloat zc, GLfloat xlen, GLfloat zlen) { + + glColor3d(0.729, 0.91, 0.51); // jasnozielony, dla grass02.bmp (https://rgbcolorpicker.com/0-1) + glEnable(GL_TEXTURE_2D); + + glBindTexture(GL_TEXTURE_2D, texture[1]); + glBegin(GL_QUADS); + glTexCoord2d(1.0, 1.0); glVertex3d(xc - xlen, yc, zc - zlen); + glTexCoord2d(1.0, 0.0); glVertex3d(xc + xlen, yc, zc - zlen); + glTexCoord2d(0.0, 0.0); glVertex3d(xc + xlen, yc, zc + zlen); + glTexCoord2d(0.0, 1.0); glVertex3d(xc - xlen, yc, zc + zlen); + glEnd(); + + glDisable(GL_TEXTURE_2D); + +} + +void stodola(GLfloat xc, GLfloat yc, GLfloat zc, GLfloat krawedz) { + + glEnable(GL_TEXTURE_2D); + + // ściany stodoły z bruku (brickwall) + glColor3d(0.612f, 0.573f, 0.478f); // ciemny szary popadający w brąz (https://rgbcolorpicker.com/0-1) + glBindTexture(GL_TEXTURE_2D, texture[3]); + glBegin(GL_QUADS); + + glTexCoord2d(1.0, 1.0); glVertex3d(xc - krawedz/2, yc, zc - krawedz/2); + glTexCoord2d(1.0, 0.0); glVertex3d(xc - krawedz/2, yc + krawedz, zc - krawedz/2); + glTexCoord2d(0.0, 0.0); glVertex3d(xc + krawedz/2, yc + krawedz, zc - krawedz/2); + glTexCoord2d(0.0, 1.0); glVertex3d(xc + krawedz/2, yc, zc - krawedz/2); + + glTexCoord2d(1.0, 1.0); glVertex3d(xc - krawedz/2, yc, zc - krawedz/2); + glTexCoord2d(1.0, 0.0); glVertex3d(xc - krawedz/2, yc + krawedz, zc - krawedz/2); + glTexCoord2d(0.0, 0.0); glVertex3d(xc - krawedz/2, yc + krawedz, zc + krawedz/2); + glTexCoord2d(0.0, 1.0); glVertex3d(xc - krawedz/2, yc, zc + krawedz/2); + + glTexCoord2d(1.0, 1.0); glVertex3d(xc - krawedz/2, yc, zc + krawedz/2); + glTexCoord2d(1.0, 0.0); glVertex3d(xc - krawedz/2, yc + krawedz, zc + krawedz/2); + glTexCoord2d(0.0, 0.0); glVertex3d(xc + krawedz/2, yc + krawedz, zc + krawedz/2); + glTexCoord2d(0.0, 1.0); glVertex3d(xc + krawedz/2, yc, zc + krawedz/2); + + glEnd(); + + // przód i tył dachu + glColor3d(0.612f, 0.573f, 0.478f); + glBindTexture(GL_TEXTURE_2D, texture[3]); + glBegin(GL_TRIANGLES); + + glTexCoord2f(1.0, 1.0); glVertex3f(xc - krawedz/2, yc + krawedz, zc - krawedz/2); + glTexCoord2f(1.0, 0.0); glVertex3f(xc - krawedz/2, yc + 1.5 * krawedz, zc); + glTexCoord2f(0.0, 0.0); glVertex3f(xc - krawedz/2, yc + krawedz, zc + krawedz/2); + + glTexCoord2f(1.0, 1.0); glVertex3f(xc + krawedz/2, yc + krawedz, zc - krawedz/2); + glTexCoord2f(1.0, 0.0); glVertex3f(xc + krawedz/2, yc + 1.5 * krawedz, zc); + glTexCoord2f(0.0, 0.0); glVertex3f(xc + krawedz/2, yc + krawedz, zc + krawedz/2); + + glEnd(); + + + // dach stodoły (barnroof) + glColor3d(0.639, 0.553, 0.322); // wyblakły brązowy + glBindTexture(GL_TEXTURE_2D, texture[2]); + glBegin(GL_QUADS); + + glTexCoord2d(1.0, 1.0); glVertex3d(xc - krawedz/2, yc + krawedz, zc + krawedz/2); + glTexCoord2d(1.0, 0.0); glVertex3d(xc - krawedz/2, yc + 1.5 * krawedz, zc); + glTexCoord2d(0.0, 0.0); glVertex3d(xc + krawedz/2, yc + 1.5 * krawedz, zc); + glTexCoord2d(0.0, 1.0); glVertex3d(xc + krawedz/2, yc + krawedz, zc + krawedz/2); + + glTexCoord2d(1.0, 1.0); glVertex3d(xc - krawedz/2, yc + krawedz, zc - krawedz/2); + glTexCoord2d(1.0, 0.0); glVertex3d(xc - krawedz/2, yc + 1.5 * krawedz, zc); + glTexCoord2d(0.0, 0.0); glVertex3d(xc + krawedz/2, yc + 1.5 * krawedz, zc); + glTexCoord2d(0.0, 1.0); glVertex3d(xc + krawedz/2, yc + krawedz, zc - krawedz/2); + + glEnd(); + + glDisable(GL_TEXTURE_2D); + +} + +void plot(GLfloat xc, GLfloat yc, GLfloat zc, GLfloat length, GLfloat gruboscY, bool mod_x) { + + GLfloat grubosc = 1.0f; + + // timestampedCout("main.cpp (plot): otrzymano xc=" << xc << " yc=" << yc << " zc=" << zc << " length=" << length << " mod_x=" << mod_x); + + GLfloat gruboscX = grubosc + mod_x * length; + GLfloat gruboscZ = grubosc + !mod_x * length; + + // timestampedCout("main.cpp (plot): gruboscX=" << gruboscX << " gruboscY=" << gruboscY << " gruboscZ=" << gruboscZ); + + // d-----------c Y + // / /| ^ + // a-----------b | \ + // | h | g C->X + // | |/ | + // e-----------f v + // Z (płaszczyzna XZ, Y to trzeci wymiar) + + GLfloat a1_x = xc - gruboscX / 2, a1_y = yc + 1 + gruboscY, a1_z = zc + gruboscZ / 2; // 3 + GLfloat b1_x = xc + gruboscX / 2, b1_y = yc + 1 + gruboscY, b1_z = zc + gruboscZ / 2; + GLfloat c1_x = xc + gruboscX / 2, c1_y = yc + 1 + gruboscY, c1_z = zc - gruboscZ / 2; + GLfloat d1_x = xc - gruboscX / 2, d1_y = yc + 1 + gruboscY, d1_z = zc - gruboscZ / 2; + GLfloat e1_x = xc - gruboscX / 2, e1_y = yc + 1 , e1_z = zc + gruboscZ / 2; // 1 + GLfloat f1_x = xc + gruboscX / 2, f1_y = yc + 1 , f1_z = zc + gruboscZ / 2; + GLfloat g1_x = xc + gruboscX / 2, g1_y = yc + 1 , g1_z = zc - gruboscZ / 2; + GLfloat h1_x = xc - gruboscX / 2, h1_y = yc + 1 , h1_z = zc - gruboscZ / 2; + + GLfloat a2_x = a1_x, a2_y = a1_y - 1 - gruboscY, a2_z = a1_z; //zc - 1; // -4 + GLfloat b2_x = b1_x, b2_y = b1_y - 1 - gruboscY, b2_z = b1_z; //zc - 1; + GLfloat c2_x = c1_x, c2_y = c1_y - 1 - gruboscY, c2_z = c1_z; //zc - 1; + GLfloat d2_x = d1_x, d2_y = d1_y - 1 - gruboscY, d2_z = d1_z; //zc - 1; + GLfloat e2_x = e1_x, e2_y = e1_y - 1 - gruboscY, e2_z = e1_z; //zc - 2; + GLfloat f2_x = f1_x, f2_y = f1_y - 1 - gruboscY, f2_z = f1_z; //zc - 2; + GLfloat g2_x = g1_x, g2_y = g1_y - 1 - gruboscY, g2_z = g1_z; //zc - 2; + GLfloat h2_x = h1_x, h2_y = h1_y - 1 - gruboscY, h2_z = h1_z; //zc - 2; + + glColor3d(0.71, 0.522, 0.067); + + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, texture[0]); + glBegin(GL_QUADS); + + // Góra (1_x, 1_y, 1_z): + // ABCD + glTexCoord2d(1.0, 1.0); glVertex3d(a1_x, a1_y, a1_z); + glTexCoord2d(1.0, 0.0); glVertex3d(b1_x, b1_y, b1_z); + glTexCoord2d(0.0, 0.0); glVertex3d(c1_x, c1_y, c1_z); + glTexCoord2d(0.0, 1.0); glVertex3d(d1_x, d1_y, d1_z); + + // EFGH + glTexCoord2d(1.0, 1.0); glVertex3d(e1_x, e1_y, e1_z); + glTexCoord2d(1.0, 0.0); glVertex3d(f1_x, f1_y, f1_z); + glTexCoord2d(0.0, 0.0); glVertex3d(g1_x, g1_y, g1_z); + glTexCoord2d(0.0, 1.0); glVertex3d(h1_x, h1_y, h1_z); + + // BCGF + glTexCoord2d(1.0, 1.0); glVertex3d(b1_x, b1_y, b1_z); + glTexCoord2d(1.0, 0.0); glVertex3d(c1_x, c1_y, c1_z); + glTexCoord2d(0.0, 0.0); glVertex3d(g1_x, g1_y, g1_z); + glTexCoord2d(0.0, 1.0); glVertex3d(f1_x, f1_y, f1_z); + + // ADHE + glTexCoord2d(1.0, 1.0); glVertex3d(a1_x, a1_y, a1_z); + glTexCoord2d(1.0, 0.0); glVertex3d(b1_x, b1_y, b1_z); + glTexCoord2d(0.0, 0.0); glVertex3d(c1_x, c1_y, c1_z); + glTexCoord2d(0.0, 1.0); glVertex3d(d1_x, d1_y, d1_z); + + // ABFE + glTexCoord2d(1.0, 1.0); glVertex3d(a1_x, a1_y, a1_z); + glTexCoord2d(1.0, 0.0); glVertex3d(b1_x, b1_y, b1_z); + glTexCoord2d(0.0, 0.0); glVertex3d(f1_x, f1_y, f1_z); + glTexCoord2d(0.0, 1.0); glVertex3d(e1_x, e1_y, e1_z); + + // DCGH + glTexCoord2d(1.0, 1.0); glVertex3d(d1_x, d1_y, d1_z); + glTexCoord2d(1.0, 0.0); glVertex3d(c1_x, c1_y, c1_z); + glTexCoord2d(0.0, 0.0); glVertex3d(g1_x, g1_y, g1_z); + glTexCoord2d(0.0, 1.0); glVertex3d(h1_x, h1_y, h1_z); + + // Dół (2_x, 2_y, 2_z): + // ABCD + glTexCoord2d(1.0, 1.0); glVertex3d(a2_x, a2_y, a2_z); + glTexCoord2d(1.0, 0.0); glVertex3d(b2_x, b2_y, b2_z); + glTexCoord2d(0.0, 0.0); glVertex3d(c2_x, c2_y, c2_z); + glTexCoord2d(0.0, 1.0); glVertex3d(d2_x, d2_y, d2_z); + + // EFGH + glTexCoord2d(1.0, 1.0); glVertex3d(e2_x, e2_y, e2_z); + glTexCoord2d(1.0, 0.0); glVertex3d(f2_x, f2_y, f2_z); + glTexCoord2d(0.0, 0.0); glVertex3d(g2_x, g2_y, g2_z); + glTexCoord2d(0.0, 1.0); glVertex3d(h2_x, h2_y, h2_z); + + // BCGF + glTexCoord2d(1.0, 1.0); glVertex3d(b2_x, b2_y, b2_z); + glTexCoord2d(1.0, 0.0); glVertex3d(c2_x, c2_y, c2_z); + glTexCoord2d(0.0, 0.0); glVertex3d(g2_x, g2_y, g2_z); + glTexCoord2d(0.0, 1.0); glVertex3d(f2_x, f2_y, f2_z); + + // ADHE + glTexCoord2d(1.0, 1.0); glVertex3d(a2_x, a2_y, a2_z); + glTexCoord2d(1.0, 0.0); glVertex3d(b2_x, b2_y, b2_z); + glTexCoord2d(0.0, 0.0); glVertex3d(c2_x, c2_y, c2_z); + glTexCoord2d(0.0, 1.0); glVertex3d(d2_x, d2_y, d2_z); + + // ABFE + glTexCoord2d(1.0, 1.0); glVertex3d(a2_x, a2_y, a2_z); + glTexCoord2d(1.0, 0.0); glVertex3d(b2_x, b2_y, b2_z); + glTexCoord2d(0.0, 0.0); glVertex3d(f2_x, f2_y, f2_z); + glTexCoord2d(0.0, 1.0); glVertex3d(e2_x, e2_y, e2_z); + + // DCGH + glTexCoord2d(1.0, 1.0); glVertex3d(d2_x, d2_y, d2_z); + glTexCoord2d(1.0, 0.0); glVertex3d(c2_x, c2_y, c2_z); + glTexCoord2d(0.0, 0.0); glVertex3d(g2_x, g2_y, g2_z); + glTexCoord2d(0.0, 1.0); glVertex3d(h2_x, h2_y, h2_z); + + // Pachołki + + // d-----------c Y + // / /| ^ + // a-----------b | \ + // | h | g C->X + // | |/ | + // e-----------f v + // Z (płaszczyzna XZ, Y to trzeci wymiar) + + + GLfloat p_a_x, p_a_y, p_a_z; + GLfloat p_b_x, p_b_y, p_b_z; + GLfloat p_c_x, p_c_y, p_c_z; + GLfloat p_d_x, p_d_y, p_d_z; + GLfloat p_e_x, p_e_y, p_e_z; + GLfloat p_f_x, p_f_y, p_f_z; + GLfloat p_g_x, p_g_y, p_g_z; + GLfloat p_h_x, p_h_y, p_h_z; + + if (!mod_x) { + + p_a_x = xc + gruboscX / 2, p_a_y = yc + 1.5f * gruboscY, p_a_z = zc; // +3 dla y + p_b_x = xc - gruboscX / 2, p_b_y = yc + 1.5f * gruboscY, p_b_z = zc; // +3 dla y + p_c_x = xc + gruboscX / 2, p_c_y = yc + 1.5f * gruboscY, p_c_z = zc; // +3 dla y + p_d_x = xc - gruboscX / 2, p_d_y = yc + 1.5f * gruboscY, p_d_z = zc; // +3 dla y + p_e_x = xc + gruboscX / 2, p_e_y = yc - 6 , p_e_z = zc; + p_f_x = xc - gruboscX / 2, p_f_y = yc - 6 , p_f_z = zc; + p_g_x = xc + gruboscX / 2, p_g_y = yc - 6 , p_g_z = zc; + p_h_x = xc - gruboscX / 2, p_h_y = yc - 6 , p_h_z = zc; + + } else { + + p_a_x = xc, p_a_y = yc + 1.5f * gruboscY, p_a_z = zc - gruboscZ / 2; // +3 dla y + p_b_x = xc, p_b_y = yc + 1.5f * gruboscY, p_b_z = zc - gruboscZ / 2; // +3 dla y + p_c_x = xc, p_c_y = yc + 1.5f * gruboscY, p_c_z = zc + gruboscZ / 2; // +3 dla y + p_d_x = xc, p_d_y = yc + 1.5f * gruboscY, p_d_z = zc + gruboscZ / 2; // +3 dla y + p_e_x = xc, p_e_y = yc - 6 , p_e_z = zc - gruboscZ / 2; + p_f_x = xc, p_f_y = yc - 6 , p_f_z = zc - gruboscZ / 2; + p_g_x = xc, p_g_y = yc - 6 , p_g_z = zc + gruboscZ / 2; + p_h_x = xc, p_h_y = yc - 6 , p_h_z = zc + gruboscZ / 2; + + } + + for (int i = 0; i < 2; i++) { + + // d-----------c Y + // / /| ^ + // a-----------b | \ + // | h | g C->X + // | |/ | + // e-----------f v + // Z (płaszczyzna XZ, Y to trzeci wymiar) + + // timestampedCout("main.cpp (plot): p_a_x=" << p_a_x << " p_b_x=" << p_b_x << " p_c_x=" << p_c_x << " p_d_x=" << p_d_x); + + // ABCD + glTexCoord2d(1.0, 1.0); glVertex3d(p_a_x + (2*i-1) * (gruboscX/2 - 8) * mod_x, p_a_y, p_a_z + (2*i-1) * (gruboscZ/2 - 5) * !mod_x); + glTexCoord2d(1.0, 0.0); glVertex3d(p_b_x + (2*i-1) * (gruboscX/2 - 5) * mod_x, p_b_y, p_b_z + (2*i-1) * (gruboscZ/2 - 5) * !mod_x); + glTexCoord2d(0.0, 0.0); glVertex3d(p_c_x + (2*i-1) * (gruboscX/2 - 5) * mod_x, p_c_y, p_c_z + (2*i-1) * (gruboscZ/2 - 8) * !mod_x); + glTexCoord2d(0.0, 1.0); glVertex3d(p_d_x + (2*i-1) * (gruboscX/2 - 8) * mod_x, p_d_y, p_d_z + (2*i-1) * (gruboscZ/2 - 8) * !mod_x); + + // EFGH + glTexCoord2d(1.0, 1.0); glVertex3d(p_e_x + (2*i-1) * (gruboscX/2 - 8) * mod_x, p_e_y, p_e_z + (2*i-1) * (gruboscZ/2 - 5) * !mod_x); + glTexCoord2d(1.0, 0.0); glVertex3d(p_f_x + (2*i-1) * (gruboscX/2 - 5) * mod_x, p_f_y, p_f_z + (2*i-1) * (gruboscZ/2 - 5) * !mod_x); + glTexCoord2d(0.0, 0.0); glVertex3d(p_g_x + (2*i-1) * (gruboscX/2 - 5) * mod_x, p_g_y, p_g_z + (2*i-1) * (gruboscZ/2 - 8) * !mod_x); + glTexCoord2d(0.0, 1.0); glVertex3d(p_h_x + (2*i-1) * (gruboscX/2 - 8) * mod_x, p_h_y, p_h_z + (2*i-1) * (gruboscZ/2 - 8) * !mod_x); + + // BCGF + glTexCoord2d(1.0, 1.0); glVertex3d(p_b_x + (2*i-1) * (gruboscX/2 - 5) * mod_x, p_b_y, p_b_z + (2*i-1) * (gruboscZ/2 - 5) * !mod_x); + glTexCoord2d(1.0, 0.0); glVertex3d(p_c_x + (2*i-1) * (gruboscX/2 - 5) * mod_x, p_c_y, p_c_z + (2*i-1) * (gruboscZ/2 - 8) * !mod_x); + glTexCoord2d(0.0, 0.0); glVertex3d(p_g_x + (2*i-1) * (gruboscX/2 - 5) * mod_x, p_g_y, p_g_z + (2*i-1) * (gruboscZ/2 - 8) * !mod_x); + glTexCoord2d(0.0, 1.0); glVertex3d(p_f_x + (2*i-1) * (gruboscX/2 - 5) * mod_x, p_f_y, p_f_z + (2*i-1) * (gruboscZ/2 - 5) * !mod_x); + + // ADHE + glTexCoord2d(1.0, 1.0); glVertex3d(p_a_x + (2*i-1) * (gruboscX/2 - 8) * mod_x, p_a_y, p_a_z + (2*i-1) * (gruboscZ/2 - 5) * !mod_x); + glTexCoord2d(1.0, 0.0); glVertex3d(p_d_x + (2*i-1) * (gruboscX/2 - 8) * mod_x, p_d_y, p_d_z + (2*i-1) * (gruboscZ/2 - 8) * !mod_x); + glTexCoord2d(0.0, 0.0); glVertex3d(p_h_x + (2*i-1) * (gruboscX/2 - 8) * mod_x, p_h_y, p_h_z + (2*i-1) * (gruboscZ/2 - 8) * !mod_x); + glTexCoord2d(0.0, 1.0); glVertex3d(p_e_x + (2*i-1) * (gruboscX/2 - 8) * mod_x, p_e_y, p_e_z + (2*i-1) * (gruboscZ/2 - 5) * !mod_x); + + // ABFE + glTexCoord2d(1.0, 1.0); glVertex3d(p_a_x + (2*i-1) * (gruboscX/2 - 8) * mod_x, p_a_y, p_a_z + (2*i-1) * (gruboscZ/2 - 5) * !mod_x); + glTexCoord2d(1.0, 0.0); glVertex3d(p_b_x + (2*i-1) * (gruboscX/2 - 5) * mod_x, p_b_y, p_b_z + (2*i-1) * (gruboscZ/2 - 5) * !mod_x); + glTexCoord2d(0.0, 0.0); glVertex3d(p_f_x + (2*i-1) * (gruboscX/2 - 5) * mod_x, p_f_y, p_f_z + (2*i-1) * (gruboscZ/2 - 5) * !mod_x); + glTexCoord2d(0.0, 1.0); glVertex3d(p_e_x + (2*i-1) * (gruboscX/2 - 8) * mod_x, p_e_y, p_e_z + (2*i-1) * (gruboscZ/2 - 5) * !mod_x); + + // DCGH + glTexCoord2d(1.0, 1.0); glVertex3d(p_d_x + (2*i-1) * (gruboscX/2 - 8) * mod_x, p_d_y, p_d_z + (2*i-1) * (gruboscZ/2 - 8) * !mod_x); + glTexCoord2d(1.0, 0.0); glVertex3d(p_c_x + (2*i-1) * (gruboscX/2 - 5) * mod_x, p_c_y, p_c_z + (2*i-1) * (gruboscZ/2 - 8) * !mod_x); + glTexCoord2d(0.0, 0.0); glVertex3d(p_g_x + (2*i-1) * (gruboscX/2 - 5) * mod_x, p_g_y, p_g_z + (2*i-1) * (gruboscZ/2 - 8) * !mod_x); + glTexCoord2d(0.0, 1.0); glVertex3d(p_h_x + (2*i-1) * (gruboscX/2 - 8) * mod_x, p_h_y, p_h_z + (2*i-1) * (gruboscZ/2 - 8) * !mod_x); + + } + + + glEnd(); + + glDisable(GL_TEXTURE_2D); + +} + +//GLuint programID, VertexArrayID, MatrixID; +lazik user(10.0f, 0.0f, 0.0f, "res/models/lazik4.obj"); // obiekty eksportujemy z Forward Axis Z, Up Axis Y. +plane mapa( 0.0f, 0.0f, 0.0f, "res/models/mapka3_nofence_noplatform.obj"); void SetupRC() { // Light values and coordinates - //GLfloat ambientLight[] = { 0.3f, 0.3f, 0.3f, 1.0f }; - //GLfloat diffuseLight[] = { 0.7f, 0.7f, 0.7f, 1.0f }; - //GLfloat specular[] = { 1.0f, 1.0f, 1.0f, 1.0f }; - //GLfloat lightPos[] = { 0.0f, 150.0f, 150.0f, 1.0f }; - //GLfloat specref[] = { 1.0f, 1.0f, 1.0f, 1.0f }; + GLfloat ambientLight[] = { 0.3f, 0.3f, 0.3f, 1.0f}; + GLfloat diffuseLight[] = { 0.7f, 0.7f, 0.7f, 1.0f}; + GLfloat specular[] = { 1.0f, 1.0f, 1.0f, 1.0f}; + GLfloat lightPos[] = {50.0f, -100.0f, 50.0f, 1.0f}; + GLfloat specref[] = { 1.0f, 1.0f, 1.0f, 1.0f}; glEnable(GL_DEPTH_TEST); // Hidden surface removal glFrontFace(GL_CCW); // Counter clock-wise polygons face out - glEnable(GL_CULL_FACE); // Do not calculate inside of jet // !!! znacząco poprawia wydajność + //glEnable(GL_CULL_FACE); // Do not calculate inside of jet // !!! znacząco poprawia wydajność + glDepthFunc(GL_LESS); // Enable lighting - //glEnable(GL_LIGHTING); + glEnable(GL_LIGHTING); // Setup and enable light 0 - //glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight); - //glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight); - //glLightfv(GL_LIGHT0, GL_SPECULAR, specular); - //glLightfv(GL_LIGHT0, GL_POSITION, lightPos); - //glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight); + glLightfv(GL_LIGHT0, GL_SPECULAR, specular); + glLightfv(GL_LIGHT0, GL_POSITION, lightPos); + glEnable(GL_LIGHT0); // Enable color tracking - //glEnable(GL_COLOR_MATERIAL); + glEnable(GL_COLOR_MATERIAL); // Set Material properties to follow glColor values - //glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); + glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE); // All materials hereafter have full specular reflectivity // with a high shine - //glMaterialfv(GL_FRONT, GL_SPECULAR, specref); - //glMateriali(GL_FRONT, GL_SHININESS, 128); + glMaterialfv(GL_FRONT, GL_SPECULAR, specref); + glMateriali(GL_FRONT, GL_SHININESS, 128); // White background glClearColor(1.0f, 1.0f, 1.0f, 1.0f); // Black brush - - glColor3f(0.0, 0.0, 0.0); + //glColor3f(0.0, 0.0, 0.0); // Initialize GLEW timestampedCout("Inicjalizowanie GLEW..."); @@ -300,6 +653,15 @@ void SetupRC() { } timestampedCout("Zainicjalizowano GLFW3."); + // glGenVertexArrays(1, &VertexArrayID); + // glBindVertexArray(VertexArrayID); + + // Załaduj shadery + + // programID = LoadShaders("res/shaders/TransformVertexShader.vertexshader", "res/shaders/TextureFragmentShader.fragmentshader"); + // MatrixID = glGetUniformLocation(programID, "MVP"); + // user.passProgramID(programID); + // Załaduj model z pliku .obj timestampedCout("Ladowanie modelu lazika..."); @@ -310,7 +672,6 @@ void SetupRC() { glfwSwapInterval(1); //glClearColor(0.0f, 0.0f, 0.4f, 0.0f); - } void RenderScene(void) { @@ -323,8 +684,6 @@ void RenderScene(void) { glRotatef(yRot, 0.0f, 1.0f, 0.0f); glRotatef(zRot, 0.0f, 0.0f, 1.0f); - - // gluLookAt( // 0, 0, 0, // the position of your camera, in world space // 0, 0, 0, // where you want to look at, in world space @@ -342,7 +701,7 @@ void RenderScene(void) { // prymitywny licznik FPS if (monitormode) { std::time_t now_t = std::time(nullptr); - yRot -= 1; // showcase demo + //yRot -= 1; // showcase demo if (now_t > monitormodehelper) { std::cout << (int)(monitormodecounter / (now_t - monitormodehelper)) << " fps\n"; monitormodehelper = now_t; @@ -357,6 +716,7 @@ void RenderScene(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Use our shader + //timestampedCout("programID wynosi " << programID); //glUseProgram(programID); // // Bind our texture in Texture Unit 0 @@ -371,29 +731,42 @@ void RenderScene(void) { //############################################################################################ gluLookAt( Foward - 50.0f * sin((Rotation + 180.0f) * GL_PI / 180.0f), // Pozycja kamery wokół łazika (w poziomie) - CameraHeight, // Wysokość kamery + CameraHeight, // Wysokość kamery Sides - 50.0f * cos((Rotation + 180.0f) * GL_PI / 180.0f), // Kamera wzdłuż osi X i Z - Foward, 0.0f, Sides, // Punkt, na który patrzy kamera (łazik) - 0.0f, 1.0f, 0.0f // Wektor "góry" + Foward, 0.0f, Sides, // Punkt, na który patrzy kamera (łazik) + 0.0f, 1.0f, 0.0f // Wektor "góry" ); // Rysowanie mapy (nie porusza się) glPushMatrix(); - glColor3f(0.0, 1.0, 0.0); // Zielony kolor dla mapy - mapa.draw(); + glColor3f(0.0, 1.0, 0.0); // Zielony kolor dla mapy + platforma(50.0f, 0.0f, 45.0f, 60.0f, 65.0f); + //mapa.draw(); glPopMatrix(); // Rysowanie łazika (porusza się i obraca) glPushMatrix(); - glTranslatef(Foward, 0.0f, Sides); // Translacja łazika na jego pozycję + glTranslatef(Foward, 0.0f, Sides); // Translacja łazika na jego pozycję glRotatef(Rotation, 0.0f, 1.0f, 0.0f); // Obrót łazika wokół własnej osi - glColor3f(1.0, 0.0, 0.0); // Czerwony kolor dla łazika + glColor3f(1.0, 0.0, 0.0); // Czerwony kolor dla łazika user.draw(); glPopMatrix(); + //skrzynka(50); + plot(-10.0f, 3.0f, 45.0f, 130.0f, 4.0f, 0); // 0 - pionowo + plot( 50.0f, 3.0f, -20.0f, 120.0f, 4.0f, 1); // 1 - poziomo + plot(110.0f, 3.0f, 45.0f, 130.0f, 4.0f, 0); + plot( 50.0f, 3.0f, 110.0f, 120.0f, 4.0f, 1); + + // stodola(2.0f, 0.0f, -7.5f, 20.0f); + stodola(10.0f, 0.0f, 2.0f, 40.0f); // Zamiana buforów (double buffering) - + //glColor3f(1.0, 0.0, 0.0); + //user.draw(); + //glColor3f(0.0, 1.0, 0.0); + //mapa.draw(); + //glColor3f(0.0, 0.0, 0.0); // Swap buffers //glfwSwapBuffers(window); @@ -406,7 +779,7 @@ void RenderScene(void) { glMatrixMode(GL_MODELVIEW); // zmniejsza zużycie GPU // Flush drawing commands - // glFlush(); + //glFlush(); } // If necessary, creates a 3-3-2 palette for the device context listed. @@ -565,50 +938,89 @@ float radRotation = Rotation * GL_PI / 180.0f; wglMakeCurrent(hDC, hRC); SetupRC(); - /* - glGenTextures(2, &texture[0]); // tworzy obiekt tekstury + + glGenTextures(3, &texture[0]); // tworzy obiekt tekstury - // ładuje pierwszy obraz tekstury: - bitmapData = LoadBitmapFile((char*)"Bitmapy\\checker.bmp", &bitmapInfoHeader); + // ładuje pierwszy obraz tekstury (płotki): + bitmapData = LoadBitmapFile((char*)"res/img/woodenTextureHighExposure.bmp", &bitmapInfoHeader); - glBindTexture(GL_TEXTURE_2D, texture[0]); // aktywuje obiekt tekstury + glBindTexture(GL_TEXTURE_2D, texture[0]); // aktywuje obiekt tekstury - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + // glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + // glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT); - // tworzy obraz tekstury - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, bitmapInfoHeader.biWidth, - bitmapInfoHeader.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, bitmapData); + // tworzy obraz tekstury + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, bitmapInfoHeader.biWidth, + bitmapInfoHeader.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, bitmapData); - if (bitmapData) free(bitmapData); + if (bitmapData) free(bitmapData); - // ładuje drugi obraz tekstury: - bitmapData = LoadBitmapFile((char*)"Bitmapy\\crate.bmp", &bitmapInfoHeader); - glBindTexture(GL_TEXTURE_2D, texture[1]); // aktywuje obiekt tekstury + // ładuje drugi obraz tekstury (ziemia): + bitmapData = LoadBitmapFile((char*)"res/img/grass02.bmp", &bitmapInfoHeader); + glBindTexture(GL_TEXTURE_2D, texture[1]); // aktywuje obiekt tekstury - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT); - // tworzy obraz tekstury - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, bitmapInfoHeader.biWidth, - bitmapInfoHeader.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, bitmapData); + // tworzy obraz tekstury + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, bitmapInfoHeader.biWidth, + bitmapInfoHeader.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, bitmapData); - if (bitmapData) free(bitmapData); + if (bitmapData) free(bitmapData); - // ustalenie sposobu mieszania tekstury z tłem - glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + // ładuje trzeci obraz tekstury (dach stodoły): + bitmapData = LoadBitmapFile((char*)"res/img/barnroof.bmp", &bitmapInfoHeader); + glBindTexture(GL_TEXTURE_2D, texture[2]); // aktywuje obiekt tekstury - */ - break; + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + + // tworzy obraz tekstury + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, bitmapInfoHeader.biWidth, + bitmapInfoHeader.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, bitmapData); + + if (bitmapData) free(bitmapData); + + // ładuje czwarty obraz tekstury (kamienista ściana): + bitmapData = LoadBitmapFile((char*)"res/img/brickwall.bmp", &bitmapInfoHeader); + glBindTexture(GL_TEXTURE_2D, texture[3]); // aktywuje obiekt tekstury + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + + // tworzy obraz tekstury + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, bitmapInfoHeader.biWidth, + bitmapInfoHeader.biHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, bitmapData); + + if (bitmapData) free(bitmapData); + + // ustalenie sposobu mieszania tekstury z tłem + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + + + break; // Window is being destroyed, cleanup case WM_DESTROY: + user.unload(); + + //glDeleteProgram(programID); + //glDeleteVertexArrays(1, &VertexArrayID); + // Deselect the current rendering context and delete it wglMakeCurrent(hDC, NULL); wglDeleteContext(hRC); diff --git a/plane.hpp b/plane.hpp index 8262d91..90951c9 100644 --- a/plane.hpp +++ b/plane.hpp @@ -8,6 +8,7 @@ #include "timeh.hpp" #include "GL/glm/glm.hpp" #include "loadOBJ.h" +#include "texture.hpp" class plane { private: diff --git a/res/img/barnroof.bmp b/res/img/barnroof.bmp new file mode 100644 index 0000000..b336372 Binary files /dev/null and b/res/img/barnroof.bmp differ diff --git a/res/img/brickwall.bmp b/res/img/brickwall.bmp new file mode 100644 index 0000000..921c6c4 Binary files /dev/null and b/res/img/brickwall.bmp differ diff --git a/res/img/grass01.bmp b/res/img/grass01.bmp new file mode 100644 index 0000000..3541563 Binary files /dev/null and b/res/img/grass01.bmp differ diff --git a/res/img/grass02.bmp b/res/img/grass02.bmp new file mode 100644 index 0000000..95ca136 Binary files /dev/null and b/res/img/grass02.bmp differ diff --git a/res/img/t01.bmp b/res/img/t01.bmp new file mode 100644 index 0000000..74bc23e Binary files /dev/null and b/res/img/t01.bmp differ diff --git a/res/img/t02.bmp b/res/img/t02.bmp new file mode 100644 index 0000000..647855f Binary files /dev/null and b/res/img/t02.bmp differ diff --git a/res/img/woodenTexture.bmp b/res/img/woodenTexture.bmp new file mode 100644 index 0000000..5a78b89 Binary files /dev/null and b/res/img/woodenTexture.bmp differ diff --git a/res/img/woodenTextureHighExposure.bmp b/res/img/woodenTextureHighExposure.bmp new file mode 100644 index 0000000..24c4163 Binary files /dev/null and b/res/img/woodenTextureHighExposure.bmp differ diff --git a/res/models/cube.obj b/res/models/cube.obj index d51668e..7b0df71 100644 --- a/res/models/cube.obj +++ b/res/models/cube.obj @@ -1,44 +1,47 @@ -# Blender 4.2.1 LTS -# www.blender.org -o Cube -v 1.000000 1.000000 -1.000000 +# Blender3D v249 OBJ File: untitled.blend +# www.blender3d.org +mtllib cube.mtl v 1.000000 -1.000000 -1.000000 -v 1.000000 1.000000 1.000000 v 1.000000 -1.000000 1.000000 -v -1.000000 1.000000 -1.000000 -v -1.000000 -1.000000 -1.000000 -v -1.000000 1.000000 1.000000 v -1.000000 -1.000000 1.000000 -vn -0.0000 1.0000 -0.0000 -vn -0.0000 -0.0000 1.0000 -vn -1.0000 -0.0000 -0.0000 -vn -0.0000 -1.0000 -0.0000 -vn 1.0000 -0.0000 -0.0000 -vn -0.0000 -0.0000 -1.0000 -vt 0.875000 0.500000 -vt 0.625000 0.750000 -vt 0.625000 0.500000 -vt 0.375000 1.000000 -vt 0.375000 0.750000 -vt 0.625000 0.000000 -vt 0.375000 0.250000 -vt 0.375000 0.000000 -vt 0.375000 0.500000 -vt 0.125000 0.750000 -vt 0.125000 0.500000 -vt 0.625000 0.250000 -vt 0.875000 0.750000 -vt 0.625000 1.000000 -s 0 -f 5/1/1 3/2/1 1/3/1 -f 3/2/2 8/4/2 4/5/2 -f 7/6/3 6/7/3 8/8/3 -f 2/9/4 8/10/4 6/11/4 -f 1/3/5 4/5/5 2/9/5 -f 5/12/6 2/9/6 6/7/6 -f 5/1/1 7/13/1 3/2/1 -f 3/2/2 7/14/2 8/4/2 -f 7/6/3 5/12/3 6/7/3 -f 2/9/4 4/5/4 8/10/4 -f 1/3/5 3/2/5 4/5/5 -f 5/12/6 1/3/6 2/9/6 +v -1.000000 -1.000000 -1.000000 +v 1.000000 1.000000 -1.000000 +v 0.999999 1.000000 1.000001 +v -1.000000 1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +vt 0.748573 0.750412 +vt 0.749279 0.501284 +vt 0.999110 0.501077 +vt 0.999455 0.750380 +vt 0.250471 0.500702 +vt 0.249682 0.749677 +vt 0.001085 0.750380 +vt 0.001517 0.499994 +vt 0.499422 0.500239 +vt 0.500149 0.750166 +vt 0.748355 0.998230 +vt 0.500193 0.998728 +vt 0.498993 0.250415 +vt 0.748953 0.250920 +vn 0.000000 0.000000 -1.000000 +vn -1.000000 -0.000000 -0.000000 +vn -0.000000 -0.000000 1.000000 +vn -0.000001 0.000000 1.000000 +vn 1.000000 -0.000000 0.000000 +vn 1.000000 0.000000 0.000001 +vn 0.000000 1.000000 -0.000000 +vn -0.000000 -1.000000 0.000000 +usemtl Material_ray.png +s off +f 5/1/1 1/2/1 4/3/1 +f 5/1/1 4/3/1 8/4/1 +f 3/5/2 7/6/2 8/7/2 +f 3/5/2 8/7/2 4/8/2 +f 2/9/3 6/10/3 3/5/3 +f 6/10/4 7/6/4 3/5/4 +f 1/2/5 5/1/5 2/9/5 +f 5/1/6 6/10/6 2/9/6 +f 5/1/7 8/11/7 6/10/7 +f 8/11/7 7/12/7 6/10/7 +f 1/2/8 2/9/8 3/13/8 +f 1/2/8 3/13/8 4/14/8 diff --git a/res/models/kostka.obj b/res/models/kostka.obj new file mode 100644 index 0000000..d51668e --- /dev/null +++ b/res/models/kostka.obj @@ -0,0 +1,44 @@ +# Blender 4.2.1 LTS +# www.blender.org +o Cube +v 1.000000 1.000000 -1.000000 +v 1.000000 -1.000000 -1.000000 +v 1.000000 1.000000 1.000000 +v 1.000000 -1.000000 1.000000 +v -1.000000 1.000000 -1.000000 +v -1.000000 -1.000000 -1.000000 +v -1.000000 1.000000 1.000000 +v -1.000000 -1.000000 1.000000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vt 0.875000 0.500000 +vt 0.625000 0.750000 +vt 0.625000 0.500000 +vt 0.375000 1.000000 +vt 0.375000 0.750000 +vt 0.625000 0.000000 +vt 0.375000 0.250000 +vt 0.375000 0.000000 +vt 0.375000 0.500000 +vt 0.125000 0.750000 +vt 0.125000 0.500000 +vt 0.625000 0.250000 +vt 0.875000 0.750000 +vt 0.625000 1.000000 +s 0 +f 5/1/1 3/2/1 1/3/1 +f 3/2/2 8/4/2 4/5/2 +f 7/6/3 6/7/3 8/8/3 +f 2/9/4 8/10/4 6/11/4 +f 1/3/5 4/5/5 2/9/5 +f 5/12/6 2/9/6 6/7/6 +f 5/1/1 7/13/1 3/2/1 +f 3/2/2 7/14/2 8/4/2 +f 7/6/3 5/12/3 6/7/3 +f 2/9/4 4/5/4 8/10/4 +f 1/3/5 3/2/5 4/5/5 +f 5/12/6 1/3/6 2/9/6 diff --git a/res/models/kostkawieksza.obj b/res/models/kostkawieksza.obj new file mode 100644 index 0000000..5e7aaae --- /dev/null +++ b/res/models/kostkawieksza.obj @@ -0,0 +1,44 @@ +# Blender 4.2.1 LTS +# www.blender.org +o Cube +v 10.000000 10.000000 -10.000000 +v 10.000000 -10.000000 -10.000000 +v 10.000000 10.000000 10.000000 +v 10.000000 -10.000000 10.000000 +v -10.000000 10.000000 -10.000000 +v -10.000000 -10.000000 -10.000000 +v -10.000000 10.000000 10.000000 +v -10.000000 -10.000000 10.000000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vt 0.500000 0.250000 +vt 0.750000 0.500000 +vt 0.500000 0.500000 +vt 1.000000 0.750000 +vt 0.750000 0.750000 +vt 0.000000 0.500000 +vt 0.250000 0.750000 +vt 0.000000 0.750000 +vt 0.500000 0.750000 +vt 0.750000 1.000000 +vt 0.500000 1.000000 +vt 0.250000 0.500000 +vt 0.750000 0.250000 +vt 1.000000 0.500000 +s 0 +f 5/1/1 3/2/1 1/3/1 +f 3/2/2 8/4/2 4/5/2 +f 7/6/3 6/7/3 8/8/3 +f 2/9/4 8/10/4 6/11/4 +f 1/3/5 4/5/5 2/9/5 +f 5/12/6 2/9/6 6/7/6 +f 5/1/1 7/13/1 3/2/1 +f 3/2/2 7/14/2 8/4/2 +f 7/6/3 5/12/3 6/7/3 +f 2/9/4 4/5/4 8/10/4 +f 1/3/5 3/2/5 4/5/5 +f 5/12/6 1/3/6 2/9/6 diff --git a/res/models/mapka2.obj b/res/models/mapka2.obj index 16ef465..c89400d 100644 --- a/res/models/mapka2.obj +++ b/res/models/mapka2.obj @@ -1,20 +1,20 @@ # Blender 4.2.1 LTS # www.blender.org o platforma -v 220.000000 0.000000 20.000000 -v 220.000000 -4.000000 20.000000 -v -40.000000 0.000000 20.000000 -v -40.000000 -4.000000 20.000000 -v 220.000000 0.000000 -220.000000 -v 220.000000 -4.000000 -220.000000 -v -40.000000 0.000000 -220.000000 -v -40.000000 -4.000000 -220.000000 +v -10.000000 0.000000 110.000000 +v -10.000000 -2.000000 110.000000 +v -10.000000 0.000000 -20.000000 +v -10.000000 -2.000000 -20.000000 +v 110.000000 0.000000 110.000000 +v 110.000000 -2.000000 110.000000 +v 110.000000 0.000000 -20.000000 +v 110.000000 -2.000000 -20.000000 vn -0.0000 1.0000 -0.0000 -vn -1.0000 -0.0000 -0.0000 vn -0.0000 -0.0000 -1.0000 -vn -0.0000 -1.0000 -0.0000 -vn -0.0000 -0.0000 1.0000 vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 vt 0.875000 0.500000 vt 0.625000 0.750000 vt 0.625000 0.500000 @@ -43,70 +43,70 @@ f 2/9/4 4/5/4 8/10/4 f 1/3/5 3/2/5 4/5/5 f 5/12/6 1/3/6 2/9/6 o szopa -v -38.000000 0.000000 -20.000000 -v -38.000000 42.000000 -20.000000 -v -2.000000 0.000000 -20.000000 -v -2.000000 42.000000 -20.000000 -v -38.000000 0.000000 18.000000 -v -38.000000 42.000000 18.000000 -v -2.000000 0.000000 18.000000 -v -2.000000 42.000000 18.000000 -v -6.000000 0.000000 -20.000000 -v -34.000000 0.000000 -20.000000 -v -38.000000 4.666666 -20.000000 -v -38.000000 9.333333 -20.000000 -v -38.000000 14.000000 -20.000000 -v -38.000000 18.666668 -20.000000 -v -38.000000 23.333334 -20.000000 -v -38.000000 28.000000 -20.000000 -v -38.000000 32.666668 -20.000000 -v -38.000000 37.333336 -20.000000 -v -34.000000 42.000000 -20.000000 -v -30.000000 42.000000 -20.000000 -v -26.000000 42.000000 -20.000000 -v -22.000000 42.000000 -20.000000 -v -18.000000 42.000000 -20.000000 -v -14.000000 42.000000 -20.000000 -v -10.000000 42.000000 -20.000000 -v -6.000000 42.000000 -20.000000 -v -2.000000 37.333336 -20.000000 -v -2.000000 32.666668 -20.000000 -v -2.000000 28.000000 -20.000000 -v -2.000000 23.333332 -20.000000 -v -2.000000 18.666666 -20.000000 -v -2.000000 14.000000 -20.000000 -v -2.000000 9.333333 -20.000000 -v -2.000000 4.666666 -20.000000 -v -34.000000 4.666666 -20.000000 -v -6.000000 4.666666 -20.000000 -v -34.000000 9.333333 -20.000000 -v -6.000000 9.333333 -20.000000 -v -34.000000 14.000000 -20.000000 -v -6.000000 14.000000 -20.000000 -v -34.000000 18.666668 -20.000000 -v -30.000000 18.666668 -20.000000 -v -10.000000 18.666666 -20.000000 -v -6.000000 18.666666 -20.000000 -v -34.000000 23.333334 -20.000000 -v -30.000000 23.333334 -20.000000 -v -26.000000 23.333334 -20.000000 -v -22.000000 23.333334 -20.000000 -v -18.000000 23.333334 -20.000000 -v -14.000000 23.333334 -20.000000 -v -10.000000 23.333334 -20.000000 -v -6.000000 23.333332 -20.000000 -v -38.000000 42.000000 -20.000000 -v -2.000000 42.000000 -20.000000 -v -38.000000 42.000000 18.000000 -v -2.000000 42.000000 18.000000 -v -20.000000 64.000000 -20.000000 -v -20.000000 64.000000 18.000000 -vn 1.0000 -0.0000 -0.0000 +v 10.000000 0.000000 -19.000000 +v 10.000000 21.000000 -19.000000 +v 10.000000 0.000000 -1.000000 +v 10.000000 21.000000 -1.000000 +v -9.000000 0.000000 -19.000000 +v -9.000000 21.000000 -19.000000 +v -9.000000 0.000000 -1.000000 +v -9.000000 21.000000 -1.000000 +v 10.000000 0.000000 -3.000000 +v 10.000000 0.000000 -17.000000 +v 10.000000 2.333333 -19.000000 +v 10.000000 4.666667 -19.000000 +v 10.000000 7.000000 -19.000000 +v 10.000000 9.333334 -19.000000 +v 10.000000 11.666667 -19.000000 +v 10.000000 14.000000 -19.000000 +v 10.000000 16.333334 -19.000000 +v 10.000000 18.666668 -19.000000 +v 10.000000 21.000000 -17.000000 +v 10.000000 21.000000 -15.000000 +v 10.000000 21.000000 -13.000000 +v 10.000000 21.000000 -11.000000 +v 10.000000 21.000000 -9.000000 +v 10.000000 21.000000 -7.000000 +v 10.000000 21.000000 -5.000000 +v 10.000000 21.000000 -3.000000 +v 10.000000 18.666668 -1.000000 +v 10.000000 16.333334 -1.000000 +v 10.000000 14.000000 -1.000000 +v 10.000000 11.666666 -1.000000 +v 10.000000 9.333333 -1.000000 +v 10.000000 7.000000 -1.000000 +v 10.000000 4.666667 -1.000000 +v 10.000000 2.333333 -1.000000 +v 10.000000 2.333333 -17.000000 +v 10.000000 2.333333 -3.000000 +v 10.000000 4.666667 -17.000000 +v 10.000000 4.666667 -3.000000 +v 10.000000 7.000000 -17.000000 +v 10.000000 7.000000 -3.000000 +v 10.000000 9.333334 -17.000000 +v 10.000000 9.333334 -15.000000 +v 10.000000 9.333333 -5.000000 +v 10.000000 9.333333 -3.000000 +v 10.000000 11.666667 -17.000000 +v 10.000000 11.666667 -15.000000 +v 10.000000 11.666667 -13.000000 +v 10.000000 11.666667 -11.000000 +v 10.000000 11.666667 -9.000000 +v 10.000000 11.666667 -7.000000 +v 10.000000 11.666667 -5.000000 +v 10.000000 11.666666 -3.000000 +v 10.000000 21.000000 -19.000000 +v 10.000000 21.000000 -1.000000 +v -9.000000 21.000000 -19.000000 +v -9.000000 21.000000 -1.000000 +v 10.000000 32.000000 -10.000000 +v -9.000000 32.000000 -10.000000 vn -0.0000 -0.0000 1.0000 vn -1.0000 -0.0000 -0.0000 vn -0.0000 -0.0000 -1.0000 -vn -0.7740 0.6332 -0.0000 -vn 0.7740 0.6332 -0.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 0.6332 -0.7740 +vn -0.0000 0.6332 0.7740 vt 0.513889 0.250000 vt 0.541667 0.250000 vt 0.375000 0.500000 @@ -266,26 +266,26 @@ f 24/36/10 25/89/10 27/37/10 f 66/44/11 65/90/11 61/45/11 f 62/47/12 65/91/12 66/48/12 o plot_baza1 -v -46.000000 2.000000 19.000000 -v -46.000000 8.000000 19.000000 -v 226.000000 2.000000 19.000000 -v 226.000000 8.000000 19.000000 -v -46.000000 2.000000 21.000000 -v -46.000000 8.000000 21.000000 -v 226.000000 2.000000 21.000000 -v 226.000000 8.000000 21.000000 -v -46.000000 10.000000 19.000000 -v -46.000000 16.000000 19.000000 -v 226.000000 10.000000 19.000000 -v 226.000000 16.000000 19.000000 -v -46.000000 10.000000 21.000000 -v -46.000000 16.000000 21.000000 -v 226.000000 10.000000 21.000000 -v 226.000000 16.000000 21.000000 -vn -0.0000 -0.0000 -1.0000 +v -9.500000 1.000000 -23.000000 +v -9.500000 4.000000 -23.000000 +v -9.500000 1.000000 113.000000 +v -9.500000 4.000000 113.000000 +v -10.500000 1.000000 -23.000000 +v -10.500000 4.000000 -23.000000 +v -10.500000 1.000000 113.000000 +v -10.500000 4.000000 113.000000 +v -9.500000 5.000000 -23.000000 +v -9.500000 8.000000 -23.000000 +v -9.500000 5.000000 113.000000 +v -9.500000 8.000000 113.000000 +v -10.500000 5.000000 -23.000000 +v -10.500000 8.000000 -23.000000 +v -10.500000 5.000000 113.000000 +v -10.500000 8.000000 113.000000 vn 1.0000 -0.0000 -0.0000 vn -0.0000 -0.0000 1.0000 vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 vn -0.0000 -1.0000 -0.0000 vn -0.0000 1.0000 -0.0000 vt 0.625000 0.000000 @@ -328,26 +328,26 @@ f 80/99/16 76/104/16 75/100/16 f 81/96/17 79/98/17 75/101/17 f 78/103/18 76/105/18 80/99/18 o plot_baza2 -v -46.000000 2.000000 -223.000000 -v -46.000000 8.000000 -223.000000 -v 226.000000 2.000000 -223.000000 -v 226.000000 8.000000 -223.000000 -v -46.000000 2.000000 -221.000000 -v -46.000000 8.000000 -221.000000 -v 226.000000 2.000000 -221.000000 -v 226.000000 8.000000 -221.000000 -v -46.000000 10.000000 -223.000000 -v -46.000000 16.000000 -223.000000 -v 226.000000 10.000000 -223.000000 -v 226.000000 16.000000 -223.000000 -v -46.000000 10.000000 -221.000000 -v -46.000000 16.000000 -221.000000 -v 226.000000 10.000000 -221.000000 -v 226.000000 16.000000 -221.000000 -vn -0.0000 -0.0000 -1.0000 +v 111.500000 1.000000 -23.000000 +v 111.500000 4.000000 -23.000000 +v 111.500000 1.000000 113.000000 +v 111.500000 4.000000 113.000000 +v 110.500000 1.000000 -23.000000 +v 110.500000 4.000000 -23.000000 +v 110.500000 1.000000 113.000000 +v 110.500000 4.000000 113.000000 +v 111.500000 5.000000 -23.000000 +v 111.500000 8.000000 -23.000000 +v 111.500000 5.000000 113.000000 +v 111.500000 8.000000 113.000000 +v 110.500000 5.000000 -23.000000 +v 110.500000 8.000000 -23.000000 +v 110.500000 5.000000 113.000000 +v 110.500000 8.000000 113.000000 vn 1.0000 -0.0000 -0.0000 vn -0.0000 -0.0000 1.0000 vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 vn -0.0000 -1.0000 -0.0000 vn -0.0000 1.0000 -0.0000 vt 0.625000 0.000000 @@ -390,26 +390,26 @@ f 96/113/22 92/118/22 91/114/22 f 97/110/23 95/112/23 91/115/23 f 94/117/24 92/119/24 96/113/24 o plot_baza3 -v -42.999992 2.000000 24.000000 -v -42.999992 8.000000 24.000000 -v -43.000008 2.000000 -226.000000 -v -43.000008 8.000000 -226.000000 -v -40.999992 2.000000 24.000000 -v -40.999992 8.000000 24.000000 -v -41.000008 2.000000 -226.000000 -v -41.000008 8.000000 -226.000000 -v -42.999992 10.000000 24.000000 -v -42.999992 16.000000 24.000000 -v -43.000008 10.000000 -226.000000 -v -43.000008 16.000000 -226.000000 -v -40.999992 10.000000 24.000000 -v -40.999992 16.000000 24.000000 -v -41.000008 10.000000 -226.000000 -v -41.000008 16.000000 -226.000000 -vn -1.0000 -0.0000 -0.0000 +v -12.000000 1.000000 -21.499996 +v -12.000000 4.000000 -21.499996 +v 113.000000 1.000000 -21.500004 +v 113.000000 4.000000 -21.500004 +v -12.000000 1.000000 -20.499996 +v -12.000000 4.000000 -20.499996 +v 113.000000 1.000000 -20.500004 +v 113.000000 4.000000 -20.500004 +v -12.000000 5.000000 -21.499996 +v -12.000000 8.000000 -21.499996 +v 113.000000 5.000000 -21.500004 +v 113.000000 8.000000 -21.500004 +v -12.000000 5.000000 -20.499996 +v -12.000000 8.000000 -20.499996 +v 113.000000 5.000000 -20.500004 +v 113.000000 8.000000 -20.500004 vn -0.0000 -0.0000 -1.0000 vn 1.0000 -0.0000 -0.0000 vn -0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 -0.0000 vn -0.0000 -1.0000 -0.0000 vn -0.0000 1.0000 -0.0000 vt 0.625000 0.000000 @@ -452,26 +452,26 @@ f 112/127/28 108/132/28 107/128/28 f 113/124/29 111/126/29 107/129/29 f 110/131/30 108/133/30 112/127/30 o plot_baza4 -v 221.000000 2.000000 24.000000 -v 221.000000 8.000000 24.000000 -v 221.000000 2.000000 -226.000000 -v 221.000000 8.000000 -226.000000 -v 223.000000 2.000000 24.000000 -v 223.000000 8.000000 24.000000 -v 223.000000 2.000000 -226.000000 -v 223.000000 8.000000 -226.000000 -v 221.000000 10.000000 24.000000 -v 221.000000 16.000000 24.000000 -v 221.000000 10.000000 -226.000000 -v 221.000000 16.000000 -226.000000 -v 223.000000 10.000000 24.000000 -v 223.000000 16.000000 24.000000 -v 223.000000 10.000000 -226.000000 -v 223.000000 16.000000 -226.000000 -vn -1.0000 -0.0000 -0.0000 +v -12.000000 1.000000 110.500000 +v -12.000000 4.000000 110.500000 +v 113.000000 1.000000 110.500000 +v 113.000000 4.000000 110.500000 +v -12.000000 1.000000 111.500000 +v -12.000000 4.000000 111.500000 +v 113.000000 1.000000 111.500000 +v 113.000000 4.000000 111.500000 +v -12.000000 5.000000 110.500000 +v -12.000000 8.000000 110.500000 +v 113.000000 5.000000 110.500000 +v 113.000000 8.000000 110.500000 +v -12.000000 5.000000 111.500000 +v -12.000000 8.000000 111.500000 +v 113.000000 5.000000 111.500000 +v 113.000000 8.000000 111.500000 vn -0.0000 -0.0000 -1.0000 vn 1.0000 -0.0000 -0.0000 vn -0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 -0.0000 vn -0.0000 -1.0000 -0.0000 vn -0.0000 1.0000 -0.0000 vt 0.625000 0.000000 @@ -514,58 +514,58 @@ f 128/141/34 124/146/34 123/142/34 f 129/138/35 127/140/35 123/143/35 f 126/145/36 124/147/36 128/141/36 o plot_trzon1 -v -1.000000 -1.000000 21.000000 -v -1.000000 17.000000 21.000000 -v 3.000000 -1.000000 21.000000 -v 3.000000 17.000000 21.000000 -v -1.000000 -1.000000 23.000000 -v -1.000000 17.000000 23.000000 -v 3.000000 -1.000000 23.000000 -v 3.000000 17.000000 23.000000 -v 39.000000 -1.000000 21.000000 -v 39.000000 17.000000 21.000000 -v 43.000000 -1.000000 21.000000 -v 43.000000 17.000000 21.000000 -v 39.000000 -1.000000 23.000000 -v 39.000000 17.000000 23.000000 -v 43.000000 -1.000000 23.000000 -v 43.000000 17.000000 23.000000 -v 79.000000 -1.000000 21.000000 -v 79.000000 17.000000 21.000000 -v 83.000000 -1.000000 21.000000 -v 83.000000 17.000000 21.000000 -v 79.000000 -1.000000 23.000000 -v 79.000000 17.000000 23.000000 -v 83.000000 -1.000000 23.000000 -v 83.000000 17.000000 23.000000 -v 119.000000 -1.000000 21.000000 -v 119.000000 17.000000 21.000000 -v 123.000000 -1.000000 21.000000 -v 123.000000 17.000000 21.000000 -v 119.000000 -1.000000 23.000000 -v 119.000000 17.000000 23.000000 -v 123.000000 -1.000000 23.000000 -v 123.000000 17.000000 23.000000 -v 159.000000 -1.000000 21.000000 -v 159.000000 17.000000 21.000000 -v 163.000000 -1.000000 21.000000 -v 163.000000 17.000000 21.000000 -v 159.000000 -1.000000 23.000000 -v 159.000000 17.000000 23.000000 -v 163.000000 -1.000000 23.000000 -v 163.000000 17.000000 23.000000 -v 199.000000 -1.000000 21.000000 -v 199.000000 17.000000 21.000000 -v 203.000000 -1.000000 21.000000 -v 203.000000 17.000000 21.000000 -v 199.000000 -1.000000 23.000000 -v 199.000000 17.000000 23.000000 -v 203.000000 -1.000000 23.000000 -v 203.000000 17.000000 23.000000 -vn -0.0000 -0.0000 -1.0000 +v -10.500000 -0.500000 -0.500000 +v -10.500000 8.500000 -0.500000 +v -10.500000 -0.500000 1.500000 +v -10.500000 8.500000 1.500000 +v -11.500000 -0.500000 -0.500000 +v -11.500000 8.500000 -0.500000 +v -11.500000 -0.500000 1.500000 +v -11.500000 8.500000 1.500000 +v -10.500000 -0.500000 19.500000 +v -10.500000 8.500000 19.500000 +v -10.500000 -0.500000 21.500000 +v -10.500000 8.500000 21.500000 +v -11.500000 -0.500000 19.500000 +v -11.500000 8.500000 19.500000 +v -11.500000 -0.500000 21.500000 +v -11.500000 8.500000 21.500000 +v -10.500000 -0.500000 39.500000 +v -10.500000 8.500000 39.500000 +v -10.500000 -0.500000 41.500000 +v -10.500000 8.500000 41.500000 +v -11.500000 -0.500000 39.500000 +v -11.500000 8.500000 39.500000 +v -11.500000 -0.500000 41.500000 +v -11.500000 8.500000 41.500000 +v -10.500000 -0.500000 59.500000 +v -10.500000 8.500000 59.500000 +v -10.500000 -0.500000 61.500000 +v -10.500000 8.500000 61.500000 +v -11.500000 -0.500000 59.500000 +v -11.500000 8.500000 59.500000 +v -11.500000 -0.500000 61.500000 +v -11.500000 8.500000 61.500000 +v -10.500000 -0.500000 79.500000 +v -10.500000 8.500000 79.500000 +v -10.500000 -0.500000 81.500000 +v -10.500000 8.500000 81.500000 +v -11.500000 -0.500000 79.500000 +v -11.500000 8.500000 79.500000 +v -11.500000 -0.500000 81.500000 +v -11.500000 8.500000 81.500000 +v -10.500000 -0.500000 99.500000 +v -10.500000 8.500000 99.500000 +v -10.500000 -0.500000 101.500000 +v -10.500000 8.500000 101.500000 +v -11.500000 -0.500000 99.500000 +v -11.500000 8.500000 99.500000 +v -11.500000 -0.500000 101.500000 +v -11.500000 8.500000 101.500000 vn 1.0000 -0.0000 -0.0000 vn -0.0000 -0.0000 1.0000 vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 vn -0.0000 -1.0000 -0.0000 vn -0.0000 1.0000 -0.0000 vt 0.625000 0.000000 @@ -656,58 +656,58 @@ f 176/155/40 172/160/40 171/156/40 f 177/152/41 175/154/41 171/157/41 f 174/159/42 172/161/42 176/155/42 o plot_trzon4 -v 224.000000 -1.000000 -2.000000 -v 224.000000 17.000000 -2.000000 -v 224.000000 -1.000000 -6.000000 -v 224.000000 17.000000 -6.000000 -v 226.000000 -1.000000 -2.000000 -v 226.000000 17.000000 -2.000000 -v 226.000000 -1.000000 -6.000000 -v 226.000000 17.000000 -6.000000 -v 224.000000 -1.000000 -42.000000 -v 224.000000 17.000000 -42.000000 -v 224.000000 -1.000000 -46.000000 -v 224.000000 17.000000 -46.000000 -v 226.000000 -1.000000 -42.000000 -v 226.000000 17.000000 -42.000000 -v 226.000000 -1.000000 -46.000000 -v 226.000000 17.000000 -46.000000 -v 224.000000 -1.000000 -82.000000 -v 224.000000 17.000000 -82.000000 -v 224.000000 -1.000000 -86.000000 -v 224.000000 17.000000 -86.000000 -v 226.000000 -1.000000 -82.000000 -v 226.000000 17.000000 -82.000000 -v 226.000000 -1.000000 -86.000000 -v 226.000000 17.000000 -86.000000 -v 224.000000 -1.000000 -122.000000 -v 224.000000 17.000000 -122.000000 -v 224.000000 -1.000000 -126.000000 -v 224.000000 17.000000 -126.000000 -v 226.000000 -1.000000 -122.000000 -v 226.000000 17.000000 -122.000000 -v 226.000000 -1.000000 -126.000000 -v 226.000000 17.000000 -126.000000 -v 224.000000 -1.000000 -162.000000 -v 224.000000 17.000000 -162.000000 -v 224.000000 -1.000000 -166.000000 -v 224.000000 17.000000 -166.000000 -v 226.000000 -1.000000 -162.000000 -v 226.000000 17.000000 -162.000000 -v 226.000000 -1.000000 -166.000000 -v 226.000000 17.000000 -166.000000 -v 224.000000 -1.000000 -202.000000 -v 224.000000 17.000000 -202.000000 -v 224.000000 -1.000000 -206.000000 -v 224.000000 17.000000 -206.000000 -v 226.000000 -1.000000 -202.000000 -v 226.000000 17.000000 -202.000000 -v 226.000000 -1.000000 -206.000000 -v 226.000000 17.000000 -206.000000 -vn -1.0000 -0.0000 -0.0000 +v 1.000000 -0.500000 112.000000 +v 1.000000 8.500000 112.000000 +v 3.000000 -0.500000 112.000000 +v 3.000000 8.500000 112.000000 +v 1.000000 -0.500000 113.000000 +v 1.000000 8.500000 113.000000 +v 3.000000 -0.500000 113.000000 +v 3.000000 8.500000 113.000000 +v 21.000000 -0.500000 112.000000 +v 21.000000 8.500000 112.000000 +v 23.000000 -0.500000 112.000000 +v 23.000000 8.500000 112.000000 +v 21.000000 -0.500000 113.000000 +v 21.000000 8.500000 113.000000 +v 23.000000 -0.500000 113.000000 +v 23.000000 8.500000 113.000000 +v 41.000000 -0.500000 112.000000 +v 41.000000 8.500000 112.000000 +v 43.000000 -0.500000 112.000000 +v 43.000000 8.500000 112.000000 +v 41.000000 -0.500000 113.000000 +v 41.000000 8.500000 113.000000 +v 43.000000 -0.500000 113.000000 +v 43.000000 8.500000 113.000000 +v 61.000000 -0.500000 112.000000 +v 61.000000 8.500000 112.000000 +v 63.000000 -0.500000 112.000000 +v 63.000000 8.500000 112.000000 +v 61.000000 -0.500000 113.000000 +v 61.000000 8.500000 113.000000 +v 63.000000 -0.500000 113.000000 +v 63.000000 8.500000 113.000000 +v 81.000000 -0.500000 112.000000 +v 81.000000 8.500000 112.000000 +v 83.000000 -0.500000 112.000000 +v 83.000000 8.500000 112.000000 +v 81.000000 -0.500000 113.000000 +v 81.000000 8.500000 113.000000 +v 83.000000 -0.500000 113.000000 +v 83.000000 8.500000 113.000000 +v 101.000000 -0.500000 112.000000 +v 101.000000 8.500000 112.000000 +v 103.000000 -0.500000 112.000000 +v 103.000000 8.500000 112.000000 +v 101.000000 -0.500000 113.000000 +v 101.000000 8.500000 113.000000 +v 103.000000 -0.500000 113.000000 +v 103.000000 8.500000 113.000000 vn -0.0000 -0.0000 -1.0000 vn 1.0000 -0.0000 -0.0000 vn -0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 -0.0000 vn -0.0000 -1.0000 -0.0000 vn -0.0000 1.0000 -0.0000 vt 0.625000 0.000000 @@ -798,66 +798,66 @@ f 224/169/46 220/174/46 219/170/46 f 225/166/47 223/168/47 219/171/47 f 222/173/48 220/175/48 224/169/48 o plot_trzon2 -v 7.000000 -1.000000 -225.000000 -v 7.000000 17.000000 -225.000000 -v 11.000000 -1.000000 -225.000000 -v 11.000000 17.000000 -225.000000 -v 7.000000 -1.000000 -223.000000 -v 7.000000 17.000000 -223.000000 -v 11.000000 -1.000000 -223.000000 -v 11.000000 17.000000 -223.000000 -v 47.000000 -1.000000 -225.000000 -v 47.000000 17.000000 -225.000000 -v 51.000000 -1.000000 -225.000000 -v 51.000000 17.000000 -225.000000 -v 47.000000 -1.000000 -223.000000 -v 47.000000 17.000000 -223.000000 -v 51.000000 -1.000000 -223.000000 -v 51.000000 17.000000 -223.000000 -v 87.000000 -1.000000 -225.000000 -v 87.000000 17.000000 -225.000000 -v 91.000000 -1.000000 -225.000000 -v 91.000000 17.000000 -225.000000 -v 87.000000 -1.000000 -223.000000 -v 87.000000 17.000000 -223.000000 -v 91.000000 -1.000000 -223.000000 -v 91.000000 17.000000 -223.000000 -v 127.000000 -1.000000 -225.000000 -v 127.000000 17.000000 -225.000000 -v 131.000000 -1.000000 -225.000000 -v 131.000000 17.000000 -225.000000 -v 127.000000 -1.000000 -223.000000 -v 127.000000 17.000000 -223.000000 -v 131.000000 -1.000000 -223.000000 -v 131.000000 17.000000 -223.000000 -v 167.000000 -1.000000 -225.000000 -v 167.000000 17.000000 -225.000000 -v 171.000000 -1.000000 -225.000000 -v 171.000000 17.000000 -225.000000 -v 167.000000 -1.000000 -223.000000 -v 167.000000 17.000000 -223.000000 -v 171.000000 -1.000000 -223.000000 -v 171.000000 17.000000 -223.000000 -v 207.000000 -1.000000 -225.000000 -v 207.000000 17.000000 -225.000000 -v 211.000000 -1.000000 -225.000000 -v 211.000000 17.000000 -225.000000 -v 207.000000 -1.000000 -223.000000 -v 207.000000 17.000000 -223.000000 -v 211.000000 -1.000000 -223.000000 -v 211.000000 17.000000 -223.000000 -v -33.000000 -1.000000 -225.000000 -v -33.000000 17.000000 -225.000000 -v -29.000000 -1.000000 -225.000000 -v -29.000000 17.000000 -225.000000 -v -33.000000 -1.000000 -223.000000 -v -33.000000 17.000000 -223.000000 -v -29.000000 -1.000000 -223.000000 -v -29.000000 17.000000 -223.000000 -vn -0.0000 -0.0000 -1.0000 +v 112.500000 -0.500000 3.500000 +v 112.500000 8.500000 3.500000 +v 112.500000 -0.500000 5.500000 +v 112.500000 8.500000 5.500000 +v 111.500000 -0.500000 3.500000 +v 111.500000 8.500000 3.500000 +v 111.500000 -0.500000 5.500000 +v 111.500000 8.500000 5.500000 +v 112.500000 -0.500000 23.500000 +v 112.500000 8.500000 23.500000 +v 112.500000 -0.500000 25.500000 +v 112.500000 8.500000 25.500000 +v 111.500000 -0.500000 23.500000 +v 111.500000 8.500000 23.500000 +v 111.500000 -0.500000 25.500000 +v 111.500000 8.500000 25.500000 +v 112.500000 -0.500000 43.500000 +v 112.500000 8.500000 43.500000 +v 112.500000 -0.500000 45.500000 +v 112.500000 8.500000 45.500000 +v 111.500000 -0.500000 43.500000 +v 111.500000 8.500000 43.500000 +v 111.500000 -0.500000 45.500000 +v 111.500000 8.500000 45.500000 +v 112.500000 -0.500000 63.500000 +v 112.500000 8.500000 63.500000 +v 112.500000 -0.500000 65.500000 +v 112.500000 8.500000 65.500000 +v 111.500000 -0.500000 63.500000 +v 111.500000 8.500000 63.500000 +v 111.500000 -0.500000 65.500000 +v 111.500000 8.500000 65.500000 +v 112.500000 -0.500000 83.500000 +v 112.500000 8.500000 83.500000 +v 112.500000 -0.500000 85.500000 +v 112.500000 8.500000 85.500000 +v 111.500000 -0.500000 83.500000 +v 111.500000 8.500000 83.500000 +v 111.500000 -0.500000 85.500000 +v 111.500000 8.500000 85.500000 +v 112.500000 -0.500000 103.500000 +v 112.500000 8.500000 103.500000 +v 112.500000 -0.500000 105.500000 +v 112.500000 8.500000 105.500000 +v 111.500000 -0.500000 103.500000 +v 111.500000 8.500000 103.500000 +v 111.500000 -0.500000 105.500000 +v 111.500000 8.500000 105.500000 +v 112.500000 -0.500000 -16.500000 +v 112.500000 8.500000 -16.500000 +v 112.500000 -0.500000 -14.500000 +v 112.500000 8.500000 -14.500000 +v 111.500000 -0.500000 -16.500000 +v 111.500000 8.500000 -16.500000 +v 111.500000 -0.500000 -14.500000 +v 111.500000 8.500000 -14.500000 vn 1.0000 -0.0000 -0.0000 vn -0.0000 -0.0000 1.0000 vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 vn -0.0000 -1.0000 -0.0000 vn -0.0000 1.0000 -0.0000 vt 0.625000 0.000000 @@ -958,58 +958,58 @@ f 280/183/52 276/188/52 275/184/52 f 281/180/53 279/182/53 275/185/53 f 278/187/54 276/189/54 280/183/54 o plot_trzon3 -v -43.999996 -1.000000 -2.000000 -v -43.999996 17.000000 -2.000000 -v -43.999996 -1.000000 -6.000000 -v -43.999996 17.000000 -6.000000 -v -41.999996 -1.000000 -2.000000 -v -41.999996 17.000000 -2.000000 -v -41.999996 -1.000000 -6.000000 -v -41.999996 17.000000 -6.000000 -v -43.999996 -1.000000 -42.000000 -v -43.999996 17.000000 -42.000000 -v -43.999996 -1.000000 -46.000000 -v -43.999996 17.000000 -46.000000 -v -41.999996 -1.000000 -42.000000 -v -41.999996 17.000000 -42.000000 -v -41.999996 -1.000000 -46.000000 -v -41.999996 17.000000 -46.000000 -v -44.000000 -1.000000 -82.000000 -v -44.000000 17.000000 -82.000000 -v -44.000000 -1.000000 -86.000000 -v -44.000000 17.000000 -86.000000 -v -42.000000 -1.000000 -82.000000 -v -42.000000 17.000000 -82.000000 -v -42.000000 -1.000000 -86.000000 -v -42.000000 17.000000 -86.000000 -v -44.000000 -1.000000 -122.000000 -v -44.000000 17.000000 -122.000000 -v -44.000000 -1.000000 -126.000000 -v -44.000000 17.000000 -126.000000 -v -42.000000 -1.000000 -122.000000 -v -42.000000 17.000000 -122.000000 -v -42.000000 -1.000000 -126.000000 -v -42.000000 17.000000 -126.000000 -v -44.000004 -1.000000 -162.000000 -v -44.000004 17.000000 -162.000000 -v -44.000004 -1.000000 -166.000000 -v -44.000004 17.000000 -166.000000 -v -42.000004 -1.000000 -162.000000 -v -42.000004 17.000000 -162.000000 -v -42.000004 -1.000000 -166.000000 -v -42.000004 17.000000 -166.000000 -v -44.000004 -1.000000 -202.000000 -v -44.000004 17.000000 -202.000000 -v -44.000004 -1.000000 -206.000000 -v -44.000004 17.000000 -206.000000 -v -42.000004 -1.000000 -202.000000 -v -42.000004 17.000000 -202.000000 -v -42.000004 -1.000000 -206.000000 -v -42.000004 17.000000 -206.000000 -vn -1.0000 -0.0000 -0.0000 +v 1.000000 -0.500000 -21.999998 +v 1.000000 8.500000 -21.999998 +v 3.000000 -0.500000 -21.999998 +v 3.000000 8.500000 -21.999998 +v 1.000000 -0.500000 -20.999998 +v 1.000000 8.500000 -20.999998 +v 3.000000 -0.500000 -20.999998 +v 3.000000 8.500000 -20.999998 +v 21.000000 -0.500000 -21.999998 +v 21.000000 8.500000 -21.999998 +v 23.000000 -0.500000 -21.999998 +v 23.000000 8.500000 -21.999998 +v 21.000000 -0.500000 -20.999998 +v 21.000000 8.500000 -20.999998 +v 23.000000 -0.500000 -20.999998 +v 23.000000 8.500000 -20.999998 +v 41.000000 -0.500000 -22.000000 +v 41.000000 8.500000 -22.000000 +v 43.000000 -0.500000 -22.000000 +v 43.000000 8.500000 -22.000000 +v 41.000000 -0.500000 -21.000000 +v 41.000000 8.500000 -21.000000 +v 43.000000 -0.500000 -21.000000 +v 43.000000 8.500000 -21.000000 +v 61.000000 -0.500000 -22.000000 +v 61.000000 8.500000 -22.000000 +v 63.000000 -0.500000 -22.000000 +v 63.000000 8.500000 -22.000000 +v 61.000000 -0.500000 -21.000000 +v 61.000000 8.500000 -21.000000 +v 63.000000 -0.500000 -21.000000 +v 63.000000 8.500000 -21.000000 +v 81.000000 -0.500000 -22.000002 +v 81.000000 8.500000 -22.000002 +v 83.000000 -0.500000 -22.000002 +v 83.000000 8.500000 -22.000002 +v 81.000000 -0.500000 -21.000002 +v 81.000000 8.500000 -21.000002 +v 83.000000 -0.500000 -21.000002 +v 83.000000 8.500000 -21.000002 +v 101.000000 -0.500000 -22.000002 +v 101.000000 8.500000 -22.000002 +v 103.000000 -0.500000 -22.000002 +v 103.000000 8.500000 -22.000002 +v 101.000000 -0.500000 -21.000002 +v 101.000000 8.500000 -21.000002 +v 103.000000 -0.500000 -21.000002 +v 103.000000 8.500000 -21.000002 vn -0.0000 -0.0000 -1.0000 vn 1.0000 -0.0000 -0.0000 vn -0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 -0.0000 vn -0.0000 -1.0000 -0.0000 vn -0.0000 1.0000 -0.0000 vt 0.625000 0.000000 diff --git a/res/models/mapka3_nofence.obj b/res/models/mapka3_nofence.obj new file mode 100644 index 0000000..0cd62ef --- /dev/null +++ b/res/models/mapka3_nofence.obj @@ -0,0 +1,267 @@ +# Blender 4.2.1 LTS +# www.blender.org +o platforma +v -10.000000 0.000000 110.000000 +v -10.000000 -2.000000 110.000000 +v -10.000000 0.000000 -20.000000 +v -10.000000 -2.000000 -20.000000 +v 110.000000 0.000000 110.000000 +v 110.000000 -2.000000 110.000000 +v 110.000000 0.000000 -20.000000 +v 110.000000 -2.000000 -20.000000 +vn -0.0000 1.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 -1.0000 -0.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 1.0000 +vt 0.875000 0.500000 +vt 0.625000 0.750000 +vt 0.625000 0.500000 +vt 0.375000 1.000000 +vt 0.375000 0.750000 +vt 0.625000 0.000000 +vt 0.375000 0.250000 +vt 0.375000 0.000000 +vt 0.375000 0.500000 +vt 0.125000 0.750000 +vt 0.125000 0.500000 +vt 0.625000 0.250000 +vt 0.875000 0.750000 +vt 0.625000 1.000000 +s 0 +f 5/1/1 3/2/1 1/3/1 +f 3/2/2 8/4/2 4/5/2 +f 7/6/3 6/7/3 8/8/3 +f 2/9/4 8/10/4 6/11/4 +f 1/3/5 4/5/5 2/9/5 +f 5/12/6 2/9/6 6/7/6 +f 5/1/1 7/13/1 3/2/1 +f 3/2/2 7/14/2 8/4/2 +f 7/6/3 5/12/3 6/7/3 +f 2/9/4 4/5/4 8/10/4 +f 1/3/5 3/2/5 4/5/5 +f 5/12/6 1/3/6 2/9/6 +o szopa +v 10.000000 0.000000 -19.000000 +v 10.000000 21.000000 -19.000000 +v 10.000000 0.000000 -1.000000 +v 10.000000 21.000000 -1.000000 +v -9.000000 0.000000 -19.000000 +v -9.000000 21.000000 -19.000000 +v -9.000000 0.000000 -1.000000 +v -9.000000 21.000000 -1.000000 +v 10.000000 0.000000 -3.000000 +v 10.000000 0.000000 -17.000000 +v 10.000000 2.333333 -19.000000 +v 10.000000 4.666667 -19.000000 +v 10.000000 7.000000 -19.000000 +v 10.000000 9.333334 -19.000000 +v 10.000000 11.666667 -19.000000 +v 10.000000 14.000000 -19.000000 +v 10.000000 16.333334 -19.000000 +v 10.000000 18.666668 -19.000000 +v 10.000000 21.000000 -17.000000 +v 10.000000 21.000000 -15.000000 +v 10.000000 21.000000 -13.000000 +v 10.000000 21.000000 -11.000000 +v 10.000000 21.000000 -9.000000 +v 10.000000 21.000000 -7.000000 +v 10.000000 21.000000 -5.000000 +v 10.000000 21.000000 -3.000000 +v 10.000000 18.666668 -1.000000 +v 10.000000 16.333334 -1.000000 +v 10.000000 14.000000 -1.000000 +v 10.000000 11.666666 -1.000000 +v 10.000000 9.333333 -1.000000 +v 10.000000 7.000000 -1.000000 +v 10.000000 4.666667 -1.000000 +v 10.000000 2.333333 -1.000000 +v 10.000000 2.333333 -17.000000 +v 10.000000 2.333333 -3.000000 +v 10.000000 4.666667 -17.000000 +v 10.000000 4.666667 -3.000000 +v 10.000000 7.000000 -17.000000 +v 10.000000 7.000000 -3.000000 +v 10.000000 9.333334 -17.000000 +v 10.000000 9.333334 -15.000000 +v 10.000000 9.333333 -5.000000 +v 10.000000 9.333333 -3.000000 +v 10.000000 11.666667 -17.000000 +v 10.000000 11.666667 -15.000000 +v 10.000000 11.666667 -13.000000 +v 10.000000 11.666667 -11.000000 +v 10.000000 11.666667 -9.000000 +v 10.000000 11.666667 -7.000000 +v 10.000000 11.666667 -5.000000 +v 10.000000 11.666666 -3.000000 +v 10.000000 21.000000 -19.000000 +v 10.000000 21.000000 -1.000000 +v -9.000000 21.000000 -19.000000 +v -9.000000 21.000000 -1.000000 +v 10.000000 32.000000 -10.000000 +v -9.000000 32.000000 -10.000000 +vn -0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 0.6332 -0.7740 +vn -0.0000 0.6332 0.7740 +vt 0.513889 0.250000 +vt 0.541667 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.486111 1.000000 +vt 0.458333 1.000000 +vt 0.486111 0.000000 +vt 0.486111 0.027778 +vt 0.458333 0.027778 +vt 0.486111 0.222222 +vt 0.458333 0.222222 +vt 0.486111 0.194444 +vt 0.513889 0.027778 +vt 0.486111 0.055556 +vt 0.513889 0.194444 +vt 0.486111 0.250000 +vt 0.458333 0.250000 +vt 0.000000 0.000000 +vt 0.513889 0.055556 +vt 0.541667 0.000000 +vt 0.625000 0.027778 +vt 0.001001 0.997998 +vt 0.001001 0.501001 +vt 0.497998 0.501001 +vt 0.498999 0.502002 +vt 0.498999 0.998999 +vt 0.002002 0.998999 +vt 0.501001 0.001001 +vt 0.998999 0.498999 +vt 0.998999 0.001001 +vt 0.001001 0.001001 +vt 0.498999 0.498999 +vt 0.498999 0.001001 +vt 0.375000 0.250000 +vt 0.402778 0.250000 +vt 0.430556 0.250000 +vt 0.625000 0.250000 +vt 0.597222 0.250000 +vt 0.569444 0.250000 +vt 0.375000 1.000000 +vt 0.625000 1.000000 +vt 0.597222 1.000000 +vt 0.569444 1.000000 +vt 0.402778 1.000000 +vt 0.430556 1.000000 +vt 0.541667 1.000000 +vt 0.513889 1.000000 +vt 0.375000 0.027778 +vt 0.375000 0.000000 +vt 0.402778 0.000000 +vt 0.430556 0.000000 +vt 0.402778 0.027778 +vt 0.458333 0.000000 +vt 0.430556 0.027778 +vt 0.513889 0.000000 +vt 0.513889 0.222222 +vt 0.375000 0.222222 +vt 0.402778 0.222222 +vt 0.430556 0.222222 +vt 0.625000 0.222222 +vt 0.625000 0.194444 +vt 0.625000 0.166667 +vt 0.513889 0.166667 +vt 0.625000 0.138889 +vt 0.625000 0.111111 +vt 0.513889 0.138889 +vt 0.513889 0.111111 +vt 0.625000 0.083333 +vt 0.625000 0.055556 +vt 0.513889 0.083333 +vt 0.597222 0.000000 +vt 0.625000 0.000000 +vt 0.569444 0.000000 +vt 0.501001 0.498999 +vt 0.001001 0.498999 +s 0 +f 38/15/7 37/16/7 15/17/7 +f 16/18/8 13/19/8 15/17/8 +f 14/20/9 22/21/9 21/22/9 +f 22/23/10 49/24/10 47/25/10 +f 52/26/10 48/27/10 51/28/10 +f 53/29/10 50/30/10 49/24/10 +f 59/31/10 52/26/10 51/28/10 +f 52/26/10 39/32/10 40/33/10 +f 50/30/10 47/25/10 49/24/10 +f 56/34/10 50/30/10 54/35/10 +f 51/28/10 57/34/10 59/31/10 +f 53/29/10 24/36/10 27/37/10 +f 61/38/10 65/39/10 62/40/10 +f 64/41/8 66/42/8 63/43/8 +f 66/44/11 61/45/11 63/46/11 +f 62/47/12 66/48/12 64/49/12 +f 15/17/7 11/50/7 42/51/7 +f 15/17/7 42/51/7 41/52/7 +f 12/53/7 16/18/7 15/17/7 +f 35/54/7 12/53/7 15/17/7 +f 15/17/7 41/52/7 40/33/7 +f 15/17/7 40/33/7 39/32/7 +f 36/55/7 35/54/7 15/17/7 +f 37/16/7 36/55/7 15/17/7 +f 15/17/7 39/32/7 38/15/7 +f 16/18/8 14/20/8 13/19/8 +f 9/56/9 13/19/9 14/20/9 +f 14/20/9 10/57/9 26/58/9 +f 14/20/9 26/58/9 25/59/9 +f 19/60/9 9/56/9 14/20/9 +f 20/61/9 19/60/9 14/20/9 +f 14/20/9 25/59/9 24/62/9 +f 14/20/9 24/62/9 23/63/9 +f 21/22/9 20/61/9 14/20/9 +f 14/20/9 23/63/9 22/21/9 +f 18/64/10 9/65/10 19/66/10 +f 18/64/10 19/66/10 20/67/10 +f 43/68/10 18/64/10 20/67/10 +f 43/68/10 20/67/10 21/69/10 +f 45/70/10 43/68/10 21/69/10 +f 22/23/10 23/71/10 53/29/10 +f 45/70/10 21/69/10 22/23/10 +f 47/25/10 45/70/10 22/23/10 +f 22/23/10 53/29/10 49/24/10 +f 53/29/10 54/35/10 50/30/10 +f 59/31/10 60/72/10 52/26/10 +f 11/50/10 17/73/10 44/74/10 +f 11/50/10 44/74/10 46/75/10 +f 42/51/10 11/50/10 46/75/10 +f 42/51/10 46/75/10 48/27/10 +f 41/52/10 42/51/10 48/27/10 +f 52/26/10 60/72/10 38/15/10 +f 41/52/10 48/27/10 52/26/10 +f 40/33/10 41/52/10 52/26/10 +f 52/26/10 38/15/10 39/32/10 +f 34/76/10 12/53/10 35/54/10 +f 34/76/10 35/54/10 36/55/10 +f 33/77/10 34/76/10 36/55/10 +f 37/16/10 38/15/10 60/72/10 +f 33/77/10 36/55/10 37/16/10 +f 32/78/10 33/77/10 37/16/10 +f 37/16/10 60/72/10 59/31/10 +f 37/16/10 59/31/10 58/79/10 +f 31/80/10 32/78/10 37/16/10 +f 30/81/10 31/80/10 37/16/10 +f 37/16/10 58/79/10 57/82/10 +f 37/16/10 57/82/10 56/83/10 +f 29/84/10 30/81/10 37/16/10 +f 28/85/10 29/84/10 37/16/10 +f 37/16/10 56/83/10 55/86/10 +f 37/16/10 55/86/10 54/35/10 +f 27/37/10 28/85/10 37/16/10 +f 26/87/10 10/88/10 27/37/10 +f 25/89/10 26/87/10 27/37/10 +f 27/37/10 37/16/10 54/35/10 +f 53/29/10 23/71/10 24/36/10 +f 27/37/10 54/35/10 53/29/10 +f 24/36/10 25/89/10 27/37/10 +f 66/44/11 65/90/11 61/45/11 +f 62/47/12 65/91/12 66/48/12 diff --git a/res/models/mapka3_nofence_noplatform.obj b/res/models/mapka3_nofence_noplatform.obj new file mode 100644 index 0000000..dcf029f --- /dev/null +++ b/res/models/mapka3_nofence_noplatform.obj @@ -0,0 +1,225 @@ +# Blender 4.2.1 LTS +# www.blender.org +o szopa +v 10.000000 0.000000 -19.000000 +v 10.000000 21.000000 -19.000000 +v 10.000000 0.000000 -1.000000 +v 10.000000 21.000000 -1.000000 +v -9.000000 0.000000 -19.000000 +v -9.000000 21.000000 -19.000000 +v -9.000000 0.000000 -1.000000 +v -9.000000 21.000000 -1.000000 +v 10.000000 0.000000 -3.000000 +v 10.000000 0.000000 -17.000000 +v 10.000000 2.333333 -19.000000 +v 10.000000 4.666667 -19.000000 +v 10.000000 7.000000 -19.000000 +v 10.000000 9.333334 -19.000000 +v 10.000000 11.666667 -19.000000 +v 10.000000 14.000000 -19.000000 +v 10.000000 16.333334 -19.000000 +v 10.000000 18.666668 -19.000000 +v 10.000000 21.000000 -17.000000 +v 10.000000 21.000000 -15.000000 +v 10.000000 21.000000 -13.000000 +v 10.000000 21.000000 -11.000000 +v 10.000000 21.000000 -9.000000 +v 10.000000 21.000000 -7.000000 +v 10.000000 21.000000 -5.000000 +v 10.000000 21.000000 -3.000000 +v 10.000000 18.666668 -1.000000 +v 10.000000 16.333334 -1.000000 +v 10.000000 14.000000 -1.000000 +v 10.000000 11.666666 -1.000000 +v 10.000000 9.333333 -1.000000 +v 10.000000 7.000000 -1.000000 +v 10.000000 4.666667 -1.000000 +v 10.000000 2.333333 -1.000000 +v 10.000000 2.333333 -17.000000 +v 10.000000 2.333333 -3.000000 +v 10.000000 4.666667 -17.000000 +v 10.000000 4.666667 -3.000000 +v 10.000000 7.000000 -17.000000 +v 10.000000 7.000000 -3.000000 +v 10.000000 9.333334 -17.000000 +v 10.000000 9.333334 -15.000000 +v 10.000000 9.333333 -5.000000 +v 10.000000 9.333333 -3.000000 +v 10.000000 11.666667 -17.000000 +v 10.000000 11.666667 -15.000000 +v 10.000000 11.666667 -13.000000 +v 10.000000 11.666667 -11.000000 +v 10.000000 11.666667 -9.000000 +v 10.000000 11.666667 -7.000000 +v 10.000000 11.666667 -5.000000 +v 10.000000 11.666666 -3.000000 +v 10.000000 21.000000 -19.000000 +v 10.000000 21.000000 -1.000000 +v -9.000000 21.000000 -19.000000 +v -9.000000 21.000000 -1.000000 +v 10.000000 32.000000 -10.000000 +v -9.000000 32.000000 -10.000000 +vn -0.0000 -0.0000 1.0000 +vn -1.0000 -0.0000 -0.0000 +vn -0.0000 -0.0000 -1.0000 +vn 1.0000 -0.0000 -0.0000 +vn -0.0000 0.6332 -0.7740 +vn -0.0000 0.6332 0.7740 +vt 0.513889 0.250000 +vt 0.541667 0.250000 +vt 0.375000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.625000 0.750000 +vt 0.486111 1.000000 +vt 0.458333 1.000000 +vt 0.486111 0.000000 +vt 0.486111 0.027778 +vt 0.458333 0.027778 +vt 0.486111 0.222222 +vt 0.458333 0.222222 +vt 0.486111 0.194444 +vt 0.513889 0.027778 +vt 0.486111 0.055556 +vt 0.513889 0.194444 +vt 0.486111 0.250000 +vt 0.458333 0.250000 +vt 0.000000 0.000000 +vt 0.513889 0.055556 +vt 0.541667 0.000000 +vt 0.625000 0.027778 +vt 0.001001 0.997998 +vt 0.001001 0.501001 +vt 0.497998 0.501001 +vt 0.498999 0.502002 +vt 0.498999 0.998999 +vt 0.002002 0.998999 +vt 0.501001 0.001001 +vt 0.998999 0.498999 +vt 0.998999 0.001001 +vt 0.001001 0.001001 +vt 0.498999 0.498999 +vt 0.498999 0.001001 +vt 0.375000 0.250000 +vt 0.402778 0.250000 +vt 0.430556 0.250000 +vt 0.625000 0.250000 +vt 0.597222 0.250000 +vt 0.569444 0.250000 +vt 0.375000 1.000000 +vt 0.625000 1.000000 +vt 0.597222 1.000000 +vt 0.569444 1.000000 +vt 0.402778 1.000000 +vt 0.430556 1.000000 +vt 0.541667 1.000000 +vt 0.513889 1.000000 +vt 0.375000 0.027778 +vt 0.375000 0.000000 +vt 0.402778 0.000000 +vt 0.430556 0.000000 +vt 0.402778 0.027778 +vt 0.458333 0.000000 +vt 0.430556 0.027778 +vt 0.513889 0.000000 +vt 0.513889 0.222222 +vt 0.375000 0.222222 +vt 0.402778 0.222222 +vt 0.430556 0.222222 +vt 0.625000 0.222222 +vt 0.625000 0.194444 +vt 0.625000 0.166667 +vt 0.513889 0.166667 +vt 0.625000 0.138889 +vt 0.625000 0.111111 +vt 0.513889 0.138889 +vt 0.513889 0.111111 +vt 0.625000 0.083333 +vt 0.625000 0.055556 +vt 0.513889 0.083333 +vt 0.597222 0.000000 +vt 0.625000 0.000000 +vt 0.569444 0.000000 +vt 0.501001 0.498999 +vt 0.001001 0.498999 +s 0 +f 30/1/1 29/2/1 7/3/1 +f 8/4/2 5/5/2 7/3/2 +f 6/6/3 14/7/3 13/8/3 +f 14/9/4 41/10/4 39/11/4 +f 44/12/4 40/13/4 43/14/4 +f 45/15/4 42/16/4 41/10/4 +f 51/17/4 44/12/4 43/14/4 +f 44/12/4 31/18/4 32/19/4 +f 42/16/4 39/11/4 41/10/4 +f 48/20/4 42/16/4 46/21/4 +f 43/14/4 49/20/4 51/17/4 +f 45/15/4 16/22/4 19/23/4 +f 53/24/4 57/25/4 54/26/4 +f 56/27/2 58/28/2 55/29/2 +f 58/30/5 53/31/5 55/32/5 +f 54/33/6 58/34/6 56/35/6 +f 7/3/1 3/36/1 34/37/1 +f 7/3/1 34/37/1 33/38/1 +f 4/39/1 8/4/1 7/3/1 +f 27/40/1 4/39/1 7/3/1 +f 7/3/1 33/38/1 32/19/1 +f 7/3/1 32/19/1 31/18/1 +f 28/41/1 27/40/1 7/3/1 +f 29/2/1 28/41/1 7/3/1 +f 7/3/1 31/18/1 30/1/1 +f 8/4/2 6/6/2 5/5/2 +f 1/42/3 5/5/3 6/6/3 +f 6/6/3 2/43/3 18/44/3 +f 6/6/3 18/44/3 17/45/3 +f 11/46/3 1/42/3 6/6/3 +f 12/47/3 11/46/3 6/6/3 +f 6/6/3 17/45/3 16/48/3 +f 6/6/3 16/48/3 15/49/3 +f 13/8/3 12/47/3 6/6/3 +f 6/6/3 15/49/3 14/7/3 +f 10/50/4 1/51/4 11/52/4 +f 10/50/4 11/52/4 12/53/4 +f 35/54/4 10/50/4 12/53/4 +f 35/54/4 12/53/4 13/55/4 +f 37/56/4 35/54/4 13/55/4 +f 14/9/4 15/57/4 45/15/4 +f 37/56/4 13/55/4 14/9/4 +f 39/11/4 37/56/4 14/9/4 +f 14/9/4 45/15/4 41/10/4 +f 45/15/4 46/21/4 42/16/4 +f 51/17/4 52/58/4 44/12/4 +f 3/36/4 9/59/4 36/60/4 +f 3/36/4 36/60/4 38/61/4 +f 34/37/4 3/36/4 38/61/4 +f 34/37/4 38/61/4 40/13/4 +f 33/38/4 34/37/4 40/13/4 +f 44/12/4 52/58/4 30/1/4 +f 33/38/4 40/13/4 44/12/4 +f 32/19/4 33/38/4 44/12/4 +f 44/12/4 30/1/4 31/18/4 +f 26/62/4 4/39/4 27/40/4 +f 26/62/4 27/40/4 28/41/4 +f 25/63/4 26/62/4 28/41/4 +f 29/2/4 30/1/4 52/58/4 +f 25/63/4 28/41/4 29/2/4 +f 24/64/4 25/63/4 29/2/4 +f 29/2/4 52/58/4 51/17/4 +f 29/2/4 51/17/4 50/65/4 +f 23/66/4 24/64/4 29/2/4 +f 22/67/4 23/66/4 29/2/4 +f 29/2/4 50/65/4 49/68/4 +f 29/2/4 49/68/4 48/69/4 +f 21/70/4 22/67/4 29/2/4 +f 20/71/4 21/70/4 29/2/4 +f 29/2/4 48/69/4 47/72/4 +f 29/2/4 47/72/4 46/21/4 +f 19/23/4 20/71/4 29/2/4 +f 18/73/4 2/74/4 19/23/4 +f 17/75/4 18/73/4 19/23/4 +f 19/23/4 29/2/4 46/21/4 +f 45/15/4 15/57/4 16/22/4 +f 19/23/4 46/21/4 45/15/4 +f 16/22/4 17/75/4 19/23/4 +f 58/30/5 57/76/5 53/31/5 +f 54/33/6 57/77/6 58/34/6 diff --git a/res/models/uvmap.DDS b/res/models/uvmap.DDS new file mode 100644 index 0000000..90ed4c7 Binary files /dev/null and b/res/models/uvmap.DDS differ diff --git a/res/shaders/TextureFragmentShader.fragmentshader b/res/shaders/TextureFragmentShader.fragmentshader new file mode 100644 index 0000000..c7f325e --- /dev/null +++ b/res/shaders/TextureFragmentShader.fragmentshader @@ -0,0 +1,17 @@ +#version 330 core + +// Interpolated values from the vertex shaders +in vec2 UV; + +// Output data +out vec3 color; + +// Values that stay constant for the whole mesh. +uniform sampler2D myTextureSampler; + +void main() { + + // Output color = color of the texture at the specified UV + color = texture(myTextureSampler, UV).rgb; + +} \ No newline at end of file diff --git a/res/shaders/TransformVertexShader.vertexshader b/res/shaders/TransformVertexShader.vertexshader new file mode 100644 index 0000000..3fb7b83 --- /dev/null +++ b/res/shaders/TransformVertexShader.vertexshader @@ -0,0 +1,20 @@ +#version 330 core + +// Input vertex data, different for all executions of this shader. +layout(location = 0) in vec3 vertexPosition_modelspace; +layout(location = 1) in vec2 vertexUV; + +// Output data; will be interpolated for each fragment. +out vec2 UV; + +// Values that stay constant for the whole mesh. +uniform mat4 MVP; + +void main() { + + // Output position of the vertex, in clip space: MVP * position + gl_Position = MVP * vec4(vertexPosition_modelspace, 1); + + // UV of the vertex. No special space for this one. + UV = vertexUV; +} \ No newline at end of file diff --git a/shader.cpp b/shader.cpp new file mode 100644 index 0000000..9de92f7 --- /dev/null +++ b/shader.cpp @@ -0,0 +1,94 @@ +#include "shader.hpp" + +GLuint LoadShaders(const char * vertex_file_path, const char * fragment_file_path) { + + // Create the shaders + GLuint VertexShaderID = glCreateShader(GL_VERTEX_SHADER); + GLuint FragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER); + + // Read the Vertex Shader code from the file + std::string VertexShaderCode; + std::ifstream VertexShaderStream(vertex_file_path, std::ios::in); + if (VertexShaderStream.is_open()) { + std::stringstream sstr; + sstr << VertexShaderStream.rdbuf(); + VertexShaderCode = sstr.str(); + VertexShaderStream.close(); + } else { + timestampedCout("shader.cpp: Impossible to open " << vertex_file_path << ". Are you in the right directory?"); + return 0; + } + + // Read the Fragment Shader code from the file + std::string FragmentShaderCode; + std::ifstream FragmentShaderStream(fragment_file_path, std::ios::in); + if(FragmentShaderStream.is_open()){ + std::stringstream sstr; + sstr << FragmentShaderStream.rdbuf(); + FragmentShaderCode = sstr.str(); + FragmentShaderStream.close(); + } + + GLint Result = GL_FALSE; + int InfoLogLength; + + + // Compile Vertex Shader + timestampedCout("shader.cpp: Compiling shader: " << vertex_file_path << "..."); + char const * VertexSourcePointer = VertexShaderCode.c_str(); + glShaderSource(VertexShaderID, 1, &VertexSourcePointer , NULL); + glCompileShader(VertexShaderID); + + // Check Vertex Shader + glGetShaderiv(VertexShaderID, GL_COMPILE_STATUS, &Result); + glGetShaderiv(VertexShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength); + if (InfoLogLength > 0) { + std::vector VertexShaderErrorMessage(InfoLogLength + 1); + glGetShaderInfoLog(VertexShaderID, InfoLogLength, NULL, &VertexShaderErrorMessage[0]); + timestampedCout("shader.cpp: VertexErrorMessage " << &VertexShaderErrorMessage[0]); + } + + + + // Compile Fragment Shader + timestampedCout("shader.cpp: Compiling shader: " << fragment_file_path << "..."); + char const * FragmentSourcePointer = FragmentShaderCode.c_str(); + glShaderSource(FragmentShaderID, 1, &FragmentSourcePointer , NULL); + glCompileShader(FragmentShaderID); + + // Check Fragment Shader + glGetShaderiv(FragmentShaderID, GL_COMPILE_STATUS, &Result); + glGetShaderiv(FragmentShaderID, GL_INFO_LOG_LENGTH, &InfoLogLength); + if (InfoLogLength > 0) { + std::vector FragmentShaderErrorMessage(InfoLogLength + 1); + glGetShaderInfoLog(FragmentShaderID, InfoLogLength, NULL, &FragmentShaderErrorMessage[0]); + timestampedCout("shader.cpp: FragmentShaderErrorMessage " << &FragmentShaderErrorMessage[0]); + } + + + + // Link the program + timestampedCout("shader.cpp: Linking program..."); + GLuint ProgramID = glCreateProgram(); + glAttachShader(ProgramID, VertexShaderID); + glAttachShader(ProgramID, FragmentShaderID); + glLinkProgram(ProgramID); + + // Check the program + glGetProgramiv(ProgramID, GL_LINK_STATUS, &Result); + glGetProgramiv(ProgramID, GL_INFO_LOG_LENGTH, &InfoLogLength); + if (InfoLogLength > 0){ + std::vector ProgramErrorMessage(InfoLogLength + 1); + glGetProgramInfoLog(ProgramID, InfoLogLength, NULL, &ProgramErrorMessage[0]); + timestampedCout("shader.cpp: ProgramErrorMessage " << &ProgramErrorMessage[0]); + } + + + glDetachShader(ProgramID, VertexShaderID); + glDetachShader(ProgramID, FragmentShaderID); + + glDeleteShader(VertexShaderID); + glDeleteShader(FragmentShaderID); + + return ProgramID; +} \ No newline at end of file diff --git a/shader.hpp b/shader.hpp new file mode 100644 index 0000000..7ee7d3d --- /dev/null +++ b/shader.hpp @@ -0,0 +1,16 @@ +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +#include +#include +#include "timeh.hpp" + +#include "GL/glew.h" + +GLuint LoadShaders(const char * vertex_file_path, const char * fragment_file_path); \ No newline at end of file diff --git a/texture.cpp b/texture.cpp new file mode 100644 index 0000000..7c71a3a --- /dev/null +++ b/texture.cpp @@ -0,0 +1,188 @@ +#include "texture.hpp" + +GLuint loadBMP_custom(const char * imagepath){ + + return 0; + + timestampedCout("texture.cpp: Reading image " << imagepath << "..."); + + // Data read from the header of the BMP file + unsigned char header[54]; + unsigned int dataPos; + unsigned int imageSize; + unsigned int width, height; + // Actual RGB data + unsigned char * data; + + // Open the file + FILE * file = fopen(imagepath, "rb"); + if (!file) { + timestampedCout("texture.cpp: " << imagepath << " could not be opened. Are you in the right directory?"); + return 0; + } + + // Read the header, i.e. the 54 first bytes + + // If less than 54 bytes are read, problem + if (fread(header, 1, 54, file) != 54) { + timestampedCout("texture.cpp: Not a correct BMP file."); + fclose(file); + return 0; + } + // A BMP files always begins with "BM" + if (header[0] != 'B' || header[1] != 'M') { + timestampedCout("texture.cpp: Not a correct BMP file."); + fclose(file); + return 0; + } + // Make sure this is a 24bpp file + if (*(int*)&(header[0x1E]) != 0) { timestampedCout("texture.cpp: Not a correct BMP file."); fclose(file); return 0;} + if (*(int*)&(header[0x1C]) != 24) { timestampedCout("texture.cpp: Not a correct BMP file."); fclose(file); return 0;} + + // Read the information about the image + dataPos = *(int*)&(header[0x0A]); + imageSize = *(int*)&(header[0x22]); + width = *(int*)&(header[0x12]); + height = *(int*)&(header[0x16]); + + // Some BMP files are misformatted, guess missing information + if (imageSize == 0) imageSize = width * height * 3; // 3 : one byte for each Red, Green and Blue component + if (dataPos == 0) dataPos = 54; // The BMP header is done that way + + // Create a buffer + data = new unsigned char [imageSize]; + + // Read the actual data from the file into the buffer + fread(data, 1, imageSize, file); + + // Everything is in memory now, the file can be closed. + fclose(file); + + // Create one OpenGL texture + GLuint textureID; + glGenTextures(1, &textureID); + + // "Bind" the newly created texture : all future texture functions will modify this texture + glBindTexture(GL_TEXTURE_2D, textureID); + + // Give the image to OpenGL + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_BGR, GL_UNSIGNED_BYTE, data); + + // OpenGL has now copied the data. Free our own version + delete [] data; + + // Poor filtering, or ... + //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + // ... nice trilinear filtering ... + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + // ... which requires mipmaps. Generate them automatically. + glGenerateMipmap(GL_TEXTURE_2D); + + // Return the ID of the texture we just created + return textureID; +} + +#define FOURCC_DXT1 0x31545844 // Equivalent to "DXT1" in ASCII +#define FOURCC_DXT3 0x33545844 // Equivalent to "DXT3" in ASCII +#define FOURCC_DXT5 0x35545844 // Equivalent to "DXT5" in ASCII + +GLuint loadDDS(const char * imagepath){ + + return 0; + + unsigned char header[124]; + + FILE *fp; + + // timestampedCout("texture.cpp: Hello!"); + + /* try to open the file */ + fp = fopen(imagepath, "rb"); + if (fp == NULL){ + timestampedCout("texture.cpp: " << imagepath << " could not be opened. Are you in the right directory?"); + return 0; + } + + /* verify the type of file */ + char filecode[4]; + fread(filecode, 1, 4, fp); + if (strncmp(filecode, "DDS ", 4) != 0) { + fclose(fp); + return 0; + } + + /* get the surface desc */ + fread(&header, 124, 1, fp); + + unsigned int height = *(unsigned int*)&(header[8 ]); + unsigned int width = *(unsigned int*)&(header[12]); + unsigned int linearSize = *(unsigned int*)&(header[16]); + unsigned int mipMapCount = *(unsigned int*)&(header[24]); + unsigned int fourCC = *(unsigned int*)&(header[80]); + + + unsigned char * buffer; + unsigned int bufsize; + /* how big is it going to be including all mipmaps? */ + bufsize = mipMapCount > 1 ? linearSize * 2 : linearSize; + buffer = (unsigned char*)malloc(bufsize * sizeof(unsigned char)); + fread(buffer, 1, bufsize, fp); + /* close the file pointer */ + fclose(fp); + + unsigned int components = (fourCC == FOURCC_DXT1) ? 3 : 4; + unsigned int format; + switch(fourCC) { + + case FOURCC_DXT1: + format = GL_COMPRESSED_RGBA_S3TC_DXT1_EXT; + break; + case FOURCC_DXT3: + format = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT; + break; + case FOURCC_DXT5: + format = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT; + break; + default: + free(buffer); + return 0; + + } + + // Create one OpenGL texture + GLuint textureID; + glGenTextures(1, &textureID); + + // "Bind" the newly created texture : all future texture functions will modify this texture + glBindTexture(GL_TEXTURE_2D, textureID); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + + unsigned int blockSize = (format == GL_COMPRESSED_RGBA_S3TC_DXT1_EXT) ? 8 : 16; + unsigned int offset = 0; + + /* load the mipmaps */ + for (unsigned int level = 0; level < mipMapCount && (width || height); ++level) { + + unsigned int size = ((width + 3) / 4) * ((height + 3) / 4) * blockSize; + glCompressedTexImage2D(GL_TEXTURE_2D, level, format, width, height, + 0, size, buffer + offset); + + offset += size; + width /= 2; + height /= 2; + + // Deal with Non-Power-Of-Two textures. This code is not included in the webpage to reduce clutter. + if (width < 1) width = 1; + if (height < 1) height = 1; + + } + + free(buffer); + return textureID; + +} \ No newline at end of file diff --git a/texture.hpp b/texture.hpp new file mode 100644 index 0000000..40ccb06 --- /dev/null +++ b/texture.hpp @@ -0,0 +1,11 @@ +#include +//#include +#include "timeh.hpp" +#include +#include "GL/glew.h" + +// Load a .BMP file using our custom loader +GLuint loadBMP_custom(const char * imagepath); + +// Load a .DDS file using GLFW's own loader +GLuint loadDDS(const char * imagepath); \ No newline at end of file diff --git a/timeh.hpp b/timeh.hpp index 0d939c0..10a0653 100644 --- a/timeh.hpp +++ b/timeh.hpp @@ -1,5 +1,4 @@ #pragma once #include -#include std::time_t getTime(); #define timestampedCout(msg) {std::time_t currentTime = getTime(); std::cout << "( " << currentTime << ") " << msg << "\n";} \ No newline at end of file