dodanie textur
This commit is contained in:
548
main.cpp
548
main.cpp
@@ -31,6 +31,9 @@
|
||||
#include "GL/glfw3.h"
|
||||
#include <ctime>
|
||||
#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);
|
||||
|
||||
Reference in New Issue
Block a user