chore: main cleanup in new files

This commit is contained in:
Pc
2026-02-02 00:33:08 +01:00
parent a3e3c8a955
commit e04fc59eda
13 changed files with 869 additions and 1315 deletions

176
Render.cpp Normal file
View File

@@ -0,0 +1,176 @@
#include "Render.h"
#include "Global.h"
#include "Utils.h"
#include "Physics.h"
#include "teksturowane.hpp"
#include "fabula.hpp"
#include "GL/wglew.h"
#include "Logger.hpp"
// Zmienne do monitorowania rozmiaru
static GLsizei lastHeight;
static GLsizei lastWidth;
void ChangeSize(GLsizei w, GLsizei h) {
if (h == 0) h = 1;
lastWidth = w;
lastHeight = h;
GLfloat fAspect = (GLfloat)w / (GLfloat)h;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f, fAspect, 1.0f, 2000.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void SetupRC() {
// Podstawowa konfiguracja OpenGL
glEnable(GL_DEPTH_TEST);
glFrontFace(GL_CCW);
glDepthFunc(GL_LESS);
glEnable(GL_MULTISAMPLE);
glEnable(GL_LINE_SMOOTH);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
glEnable(GL_NORMALIZE);
// Oświetlenie
GLfloat ambientLight[] = { 0.4f, 0.4f, 0.4f, 1.0f };
GLfloat diffuseLight[] = { 0.9f, 0.9f, 0.8f, 1.0f };
GLfloat specular[] = { 0.5f, 0.5f, 0.5f, 1.0f };
GLfloat sunPos[] = { 100.0f, 150.0f, 100.0f, 0.0f };
GLfloat fillPos[] = { -100.0f, 50.0f, -100.0f, 0.0f };
GLfloat fillDiffuse[] = { 0.3f, 0.3f, 0.4f, 1.0f };
glEnable(GL_LIGHTING);
glLightfv(GL_LIGHT0, GL_AMBIENT, ambientLight);
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuseLight);
glLightfv(GL_LIGHT0, GL_SPECULAR, specular);
glLightfv(GL_LIGHT0, GL_POSITION, sunPos);
glEnable(GL_LIGHT0);
glLightfv(GL_LIGHT1, GL_AMBIENT, ambientLight);
glLightfv(GL_LIGHT1, GL_DIFFUSE, fillDiffuse);
glLightfv(GL_LIGHT1, GL_POSITION, fillPos);
glEnable(GL_LIGHT1);
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT, GL_AMBIENT_AND_DIFFUSE);
GLfloat specref2[] = { 0.1f, 0.1f, 0.1f, 1.0f };
glMaterialfv(GL_FRONT, GL_SPECULAR, specref2);
glMateriali(GL_FRONT, GL_SHININESS, 10);
glClearColor(0.53f, 0.81f, 0.92f, 1.0f);
// Inicjalizacja GLEW
glewExperimental = true;
if (glewInit() != GLEW_OK) {
GAME_LOG("Failed to initialize GLEW");
return;
}
if (wglewIsSupported("WGL_EXT_swap_control")) wglSwapIntervalEXT(0);
if (!glfwInit()) GAME_LOG("Failed to initialize GLFW");
user.loadModel();
mapa.loadModel();
glfwSwapInterval(0);
}
void RenderScene() {
glEnable(GL_MULTISAMPLE);
glEnable(GL_NORMALIZE);
glLoadIdentity();
switch (polygonmode) {
case 1: glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); break;
default: glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
dayNight.apply();
// Kamera
float rad = Rotation * GL_PI / 180.0f;
if (panoramic_view) {
gluLookAt(Foward, 400.0f, Sides, Foward, 0.0f, Sides, 1.0f, 0.0f, 0.0f);
}
else if (fpv_view) {
float lookAtX = Foward - 10.0f * sin(rad);
float lookAtZ = Sides - 10.0f * cos(rad);
gluLookAt(Foward, 15.0f, Sides, lookAtX, 15.0f, lookAtZ, 0.0f, 1.0f, 0.0f);
}
else {
float camX = Foward + CameraHeight * sin(rad);
float camZ = Sides + CameraHeight * cos(rad);
gluLookAt(camX, CameraHeight * 0.4f, camZ, Foward, 10.0f, Sides, 0.0f, 1.0f, 0.0f);
}
glRotatef(xRot, 1.0f, 0.0f, 0.0f);
glRotatef(yRot, 0.0f, 1.0f, 0.0f);
glRotatef(zRot, 0.0f, 0.0f, 1.0f);
// Rysowanie podstawy
glPushMatrix();
glColor3d(0.031, 0.51, 0.094);
platforma(450.0f, 0.0f, -45.0f, 450.0f, 45.0f);
glPopMatrix();
short grid_x, grid_z;
ustalPozycjeGracza(Foward, Sides, grid_x, grid_z);
ustawSiatkeNaWzorNieNadpisujacPostepu();
aktualizujBiezacaKratke(grid_x, grid_z);
tworzKratkiZSiatki();
// Rysowanie Cieni
{
GLfloat lightPos[] = { 100.0f, 150.0f, 100.0f, 0.0f };
GLfloat groundPlane[] = { 0.0f, 1.0f, 0.0f, 0.15f }; // Lekko podniesiony
GLfloat shadowMatrix[16];
MakeShadowMatrix(shadowMatrix, groundPlane, lightPos);
glPushMatrix();
glMultMatrixf(shadowMatrix);
glDisable(GL_LIGHTING);
glDisable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4f(0.0f, 0.0f, 0.0f, 0.5f); // Półprzezroczysty
glPushMatrix();
glTranslatef(Foward, 0.0f, Sides);
glRotatef(Rotation, 0.0f, 1.0f, 0.0f);
user.draw();
glPopMatrix();
glDisable(GL_BLEND);
glEnable(GL_DEPTH_TEST);
glEnable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
glPopMatrix();
}
// Rysowanie Łazika
glPushMatrix();
glTranslatef(Foward, 0.0f, Sides);
glRotatef(Rotation, 0.0f, 1.0f, 0.0f);
glColor3f(1.0f, 1.0f, 1.0f);
user.draw();
UpdateRover(fences);
fpsCounter.update();
glPopMatrix();
// Inne obiekty
stodola(45.0f, 0.0f, -45.0f, 70.0f);
plot(450.0f, 3.0f, -90.0f, 900.0f, 4.0f, 1);
plot(0.0f, 3.0f, 405.0f, 990.0f, 4.0f, 0);
plot(450.0f, 3.0f, 10 * 90.0f, 900.0f, 4.0f, 1);
plot(10 * 90.0f, 3.0f, 405.0f, 990.0f, 4.0f, 0);
// Deszcz
rainSystem.update(deltaTime, Foward, Sides);
rainSystem.draw();
glFlush();
}