próba modularyzacji kodu, dodane klasy lazik oraz plane
- Makefile uwzględnia glfw - projekt w visual studio także powinien linkować glfw - dodano plik .gitignore - klasa lazik stworzona z myślą o łaziku - bliźniaczo podobna klasa plane stworzona z myślą o mapie - dodano surowy projekt mapy (res/models/mapka.obj) - usunięto zbędną klasę sześcian oraz plik wykonywalny .exe - funkcja timestampedCout() przeniesiona do plików timeh.cpp/.hpp, co pozwala na używanie jej wszędzie - w main.cpp: - zakomentowano masę (niepotrzebnego)/przeniesionego kodu - tryb monitorowania wydajności wyłącza ValidateRect(), co wymusza ciągłe renderowanie nowych klatek. pozwala to oszacować wpływ zmian na wydajność programu.
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -7,8 +7,9 @@
|
||||
grafikaKBT
|
||||
x64
|
||||
output.exe
|
||||
output2.exe
|
||||
|
||||
# obiekty testowe
|
||||
res/models/lazik.obj
|
||||
res/models/lazik2.obj
|
||||
res/models/lazik4,5.obj
|
||||
res/models/lazik4,5.obj
|
||||
|
||||
2
Makefile
2
Makefile
@@ -1,7 +1,7 @@
|
||||
# mingw-w64-x86_64-gcc-14.1.0-3 to ostatnia wspierana wersja gcc, w której można stosować wildcard'y "*.cpp"
|
||||
CC = "C:\\msys64\\mingw64\\bin\\g++.exe"
|
||||
CFLAGS = -I.
|
||||
DEPS = -lglew32 -lopengl32 -lglu32 -lgdi32
|
||||
DEPS = -lglew32 -lglfw3 -lopengl32 -lglu32 -lgdi32
|
||||
LINK = -L. -DGLEW_STATIC
|
||||
OUTPUT = output.exe
|
||||
CPPSTD = c++17
|
||||
|
||||
@@ -116,18 +116,26 @@
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<AdditionalDependencies>glfw3.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="glew.c" />
|
||||
<ClCompile Include="lazik.cpp" />
|
||||
<ClCompile Include="loadOBJ.cpp" />
|
||||
<ClCompile Include="main.cpp" />
|
||||
<ClCompile Include="szescian.cpp" />
|
||||
<ClCompile Include="timeh.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="lazik.hpp" />
|
||||
<ClInclude Include="loadOBJ.h" />
|
||||
<ClInclude Include="RESOURCE.H" />
|
||||
<ClInclude Include="szescian.h" />
|
||||
<ClInclude Include="timeh.hpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="glfw3.dll" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
||||
@@ -24,6 +24,15 @@
|
||||
<ClCompile Include="szescian.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="glew.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="lazik.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="timeh.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="loadOBJ.h">
|
||||
@@ -35,5 +44,16 @@
|
||||
<ClInclude Include="szescian.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="lazik.hpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="timeh.hpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="glfw3.dll">
|
||||
<Filter>Source Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
77
lazik.cpp
Normal file
77
lazik.cpp
Normal file
@@ -0,0 +1,77 @@
|
||||
#include "lazik.hpp"
|
||||
|
||||
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;
|
||||
timestampedCout("lazik.cpp: Zaladowano dane w konstruktorze.")
|
||||
|
||||
}
|
||||
|
||||
void lazik::loadModel() {
|
||||
|
||||
timestampedCout("lazik.cpp:");
|
||||
std::cout << " Ladowanie modelu ze sciezki " << this->modelpath << "...\n";
|
||||
bool res = loadOBJ(this->modelpath, this->vertices, this->uvs, this->normals);
|
||||
if (res) timestampedCout("Pomyslnie zaladowano model lazika.")
|
||||
else timestampedCout("Nie udalo sie zaladowac modelu lazika.");
|
||||
|
||||
glGenBuffers(1, &vertexbuffer);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, this->vertexbuffer);
|
||||
glBufferData(GL_ARRAY_BUFFER, this->vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW);
|
||||
|
||||
glGenBuffers(1, &uvbuffer);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, this->uvbuffer);
|
||||
glBufferData(GL_ARRAY_BUFFER, this->uvs.size() * sizeof(glm::vec2), &uvs[0], GL_STATIC_DRAW);
|
||||
|
||||
}
|
||||
|
||||
void lazik::draw() {
|
||||
|
||||
glEnable(GL_CULL_FACE);
|
||||
|
||||
// 1st attribute buffer: vertices
|
||||
glEnableVertexAttribArray(0);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, this->vertexbuffer);
|
||||
glVertexAttribPointer(
|
||||
0, // attribute
|
||||
3, // size
|
||||
GL_FLOAT, // type
|
||||
GL_FALSE, // normalized?
|
||||
0, // stride
|
||||
(void*)0 // array buffer offset
|
||||
);
|
||||
|
||||
// 2nd attribute buffer: UVs
|
||||
glEnableVertexAttribArray(1);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, this->uvbuffer);
|
||||
glVertexAttribPointer(
|
||||
1, // attribute
|
||||
2, // size
|
||||
GL_FLOAT, // type
|
||||
GL_FALSE, // normalized?
|
||||
0, // stride
|
||||
(void*)0 // array buffer offset
|
||||
);
|
||||
|
||||
// Draw vertices
|
||||
glDrawArrays(GL_TRIANGLES, 0, this->vertices.size());
|
||||
|
||||
glDisableVertexAttribArray(0);
|
||||
glDisableVertexAttribArray(1);
|
||||
|
||||
}
|
||||
|
||||
void lazik::moveX(float x){
|
||||
timestampedCout("dummy moveX");
|
||||
}
|
||||
|
||||
void lazik::moveY(float y){
|
||||
timestampedCout("dummy moveY");
|
||||
}
|
||||
|
||||
void lazik::moveZ(float z){
|
||||
timestampedCout("dummy moveZ");
|
||||
}
|
||||
33
lazik.hpp
Normal file
33
lazik.hpp
Normal file
@@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
#include <windows.h>
|
||||
#include "GL/glew.h"
|
||||
#include <gl/gl.h>
|
||||
#include <gl/glu.h>
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
#include "timeh.hpp"
|
||||
#include "GL/glm/glm.hpp"
|
||||
#include "loadOBJ.h"
|
||||
|
||||
class lazik {
|
||||
private:
|
||||
float c_x{0};
|
||||
float c_y{0};
|
||||
float c_z{0};
|
||||
float rot_x{0};
|
||||
float rot_y{0};
|
||||
float rot_z{0};
|
||||
std::vector <glm::vec3> vertices;
|
||||
std::vector <glm::vec2> uvs;
|
||||
std::vector <glm::vec3> normals; // Won't be used at the moment.
|
||||
GLuint vertexbuffer;
|
||||
GLuint uvbuffer;
|
||||
const char* modelpath;
|
||||
public:
|
||||
lazik(float x, float y, float z, const char* modelpath);
|
||||
void loadModel();
|
||||
void draw();
|
||||
void moveX(float x);
|
||||
void moveY(float y);
|
||||
void moveZ(float z);
|
||||
};
|
||||
102
main.cpp
102
main.cpp
@@ -23,20 +23,22 @@
|
||||
//#include <stdio.h>
|
||||
#include <iostream>
|
||||
#include "RESOURCE.H" // About box resource identifiers.
|
||||
#include "szescian.h"
|
||||
#include "loadOBJ.h"
|
||||
#include "lazik.hpp"
|
||||
#include "plane.hpp"
|
||||
//#include <vector>
|
||||
#include "GL/glm/glm.hpp"
|
||||
//#include "GL/glfw3.h"
|
||||
#include "GL/glfw3.h"
|
||||
#include <ctime>
|
||||
#include "timeh.hpp"
|
||||
|
||||
using namespace glm;
|
||||
|
||||
#define glRGB(x, y, z) glColor3ub((GLubyte)x, (GLubyte)y, (GLubyte)z)
|
||||
#define BITMAP_ID 0x4D42 // identyfikator formatu BMP
|
||||
#define GL_PI 3.1415
|
||||
#define getTime lastTime = std::time(nullptr);
|
||||
#define timestampedCout(msg) {getTime; std::cout << "( " << lastTime << ") " << msg << "\n";}
|
||||
//#define getTime lastTime = std::time(nullptr);
|
||||
//#define timestampedCout(msg) {getTime; std::cout << "( " << lastTime << ") " << msg << "\n";}
|
||||
|
||||
//using namespace std;
|
||||
|
||||
@@ -45,6 +47,7 @@ HPALETTE hPalette = NULL;
|
||||
// Application name and instance storeage
|
||||
static LPCTSTR lpszAppName = "grafikaKBT";
|
||||
static HINSTANCE hInstance;
|
||||
GLFWwindow* window;
|
||||
|
||||
// Rotation amounts
|
||||
static GLfloat xRot = 0.0f;
|
||||
@@ -194,11 +197,8 @@ void SetDCPixelFormat(HDC hDC) {
|
||||
SetPixelFormat(hDC, nPixelFormat, &pfd);
|
||||
}
|
||||
|
||||
std::vector <glm::vec3> vertices;
|
||||
std::vector <glm::vec2> uvs;
|
||||
std::vector <glm::vec3> normals; // Won't be used at the moment.
|
||||
GLuint vertexbuffer;
|
||||
GLuint uvbuffer;
|
||||
lazik user(0.0f, 0.0f, 0.0f, "res/models/lazik4.obj");
|
||||
plane mapa(0.0f, 0.0f, 0.0f, "res/models/mapka.obj");
|
||||
|
||||
void SetupRC() {
|
||||
// Light values and coordinates
|
||||
@@ -244,33 +244,29 @@ void SetupRC() {
|
||||
timestampedCout("Inicjalizowanie GLEW...");
|
||||
glewExperimental = true; // Needed for core profile
|
||||
if (glewInit() != GLEW_OK) {
|
||||
fprintf(stderr, "Failed to initialize GLEW\n");
|
||||
getchar();
|
||||
// glfwTerminate();
|
||||
timestampedCout("Failed to initialize GLEW");
|
||||
return;
|
||||
}
|
||||
|
||||
timestampedCout("Zainicjalizowano GLEW.");
|
||||
|
||||
// glfw3 jest w teorii niepotrzebny, ale może się przydać
|
||||
// do przepisania kodu na podobny do tego stąd:
|
||||
// https://github.com/opengl-tutorials/ogl/blob/master/tutorial07_model_loading/tutorial07.cpp
|
||||
timestampedCout("Inicjalizowanie GLFW3...");
|
||||
if(!glfwInit()) {
|
||||
timestampedCout("Failed to initialize GLFW");
|
||||
}
|
||||
timestampedCout("Zainicjalizowano GLFW3.");
|
||||
|
||||
// Załaduj model z pliku .obj
|
||||
// TODO: zmierzyć czas ładowania łazika w cyklach procesora/mikrosekundach
|
||||
|
||||
timestampedCout("Ladowanie lazika...");
|
||||
bool res = loadOBJ("res/models/lazik4.obj", vertices, uvs, normals);
|
||||
// bool res = loadOBJ("res/models/suzanne.obj", vertices, uvs, normals);
|
||||
timestampedCout("Ladowanie modelu lazika...");
|
||||
user.loadModel();
|
||||
timestampedCout("Ladowanie modelu mapki...");
|
||||
mapa.loadModel();
|
||||
|
||||
if (res) timestampedCout("Pomyslnie zaladowano model lazika.")
|
||||
else timestampedCout("Nie udalo sie zaladowac modelu lazika.");
|
||||
|
||||
glGenBuffers(1, &vertexbuffer);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
|
||||
glBufferData(GL_ARRAY_BUFFER, vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW);
|
||||
// timestampedCout("rozmiar vertexbuffer: " << vertices.size() * sizeof(glm::vec3));
|
||||
|
||||
glGenBuffers(1, &uvbuffer);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, uvbuffer);
|
||||
glBufferData(GL_ARRAY_BUFFER, uvs.size() * sizeof(glm::vec2), &uvs[0], GL_STATIC_DRAW);
|
||||
// timestampedCout("rozmiar uvbuffer: " << uvs.size() * sizeof(glm::vec2));
|
||||
glfwSwapInterval(1);
|
||||
|
||||
//glClearColor(0.0f, 0.0f, 0.4f, 0.0f);
|
||||
|
||||
@@ -287,9 +283,9 @@ void RenderScene(void) {
|
||||
glRotatef(zRot, 0.0f, 0.0f, 1.0f);
|
||||
|
||||
// gluLookAt(
|
||||
// 0, 0, 0, // the position of your camera, in world space
|
||||
// 0, 0, 0, // the position of your camera, in world space
|
||||
// 0, 0, 0, // where you want to look at, in world space
|
||||
// 0, 1, 0 // probably glm::vec3(0,1,0), but (0,-1,0) would make you looking upside-down, which can be great too
|
||||
// 0, 1, 0 // probably glm::vec3(0,1,0), but (0,-1,0) would make you looking upside-down, which can be great too
|
||||
// );
|
||||
|
||||
switch (polygonmode) {
|
||||
@@ -303,6 +299,7 @@ void RenderScene(void) {
|
||||
// prymitywny licznik FPS
|
||||
if (monitormode) {
|
||||
std::time_t now_t = std::time(nullptr);
|
||||
// yRot -= 1; // showcase demo
|
||||
if (now_t > monitormodehelper) {
|
||||
std::cout << (int)(monitormodecounter / (now_t - monitormodehelper)) << " fps\n";
|
||||
monitormodehelper = now_t;
|
||||
@@ -325,47 +322,13 @@ void RenderScene(void) {
|
||||
// // Set our "myTextureSampler" sampler to use Texture Unit 0
|
||||
// glUniform1i(TextureID, 0);
|
||||
|
||||
// 1st attribute buffer : vertices
|
||||
glEnableVertexAttribArray(0);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, vertexbuffer);
|
||||
glVertexAttribPointer(
|
||||
0, // attribute
|
||||
3, // size
|
||||
GL_FLOAT, // type
|
||||
GL_FALSE, // normalized?
|
||||
0, // stride
|
||||
(void*)0 // array buffer offset
|
||||
);
|
||||
|
||||
// 2nd attribute buffer: UVs
|
||||
glEnableVertexAttribArray(1);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, uvbuffer);
|
||||
glVertexAttribPointer(
|
||||
1, // attribute
|
||||
2, // size
|
||||
GL_FLOAT, // type
|
||||
GL_FALSE, // normalized?
|
||||
0, // stride
|
||||
(void*)0 // array buffer offset
|
||||
);
|
||||
|
||||
// Draw vertices
|
||||
glDrawArrays(GL_TRIANGLES, 0, vertices.size());
|
||||
|
||||
glDisableVertexAttribArray(0);
|
||||
glDisableVertexAttribArray(1);
|
||||
user.draw();
|
||||
mapa.draw();
|
||||
|
||||
// Swap buffers
|
||||
//glfwSwapBuffers(window);
|
||||
//glfwPollEvents();
|
||||
|
||||
/*
|
||||
szescian nowy;
|
||||
nowy.create(0, 0, 0, 10);
|
||||
nowy.create(-10, 20, 0, 10);
|
||||
nowy.create(25, 10, 0, 10);
|
||||
*/
|
||||
|
||||
//Wyrysowanie prostokata:
|
||||
//glRectd(-10.0,-10.0,20.0,20.0);
|
||||
|
||||
@@ -530,6 +493,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
hRC = wglCreateContext(hDC);
|
||||
wglMakeCurrent(hDC, hRC);
|
||||
SetupRC();
|
||||
|
||||
/*
|
||||
glGenTextures(2, &texture[0]); // tworzy obiekt tekstury
|
||||
|
||||
// ładuje pierwszy obraz tekstury:
|
||||
@@ -567,6 +532,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
|
||||
// ustalenie sposobu mieszania tekstury z tłem
|
||||
glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
|
||||
|
||||
*/
|
||||
break;
|
||||
|
||||
// Window is being destroyed, cleanup
|
||||
@@ -599,7 +566,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
SwapBuffers(hDC);
|
||||
|
||||
// Validate the newly painted client area
|
||||
ValidateRect(hWnd, NULL);
|
||||
if (!monitormode) ValidateRect(hWnd, NULL);
|
||||
else InvalidateRect(hWnd, NULL, FALSE);
|
||||
break;
|
||||
|
||||
// Windows is telling the application that it may modify
|
||||
|
||||
BIN
output.exe
BIN
output.exe
Binary file not shown.
77
plane.cpp
Normal file
77
plane.cpp
Normal file
@@ -0,0 +1,77 @@
|
||||
#include "plane.hpp"
|
||||
|
||||
plane::plane(float x, float y, float z, const char* modelpath){
|
||||
|
||||
this->c_x = x;
|
||||
this->c_y = y;
|
||||
this->c_z = z;
|
||||
this->modelpath = modelpath;
|
||||
timestampedCout("plane.cpp: Zaladowano dane w konstruktorze.")
|
||||
|
||||
}
|
||||
|
||||
void plane::loadModel() {
|
||||
|
||||
timestampedCout("plane.cpp:");
|
||||
std::cout << " Ladowanie modelu ze sciezki " << this->modelpath << "...\n";
|
||||
bool res = loadOBJ(this->modelpath, this->vertices, this->uvs, this->normals);
|
||||
if (res) timestampedCout("Pomyslnie zaladowano model mapki.")
|
||||
else timestampedCout("Nie udalo sie zaladowac modelu mapki.");
|
||||
|
||||
glGenBuffers(1, &vertexbuffer);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, this->vertexbuffer);
|
||||
glBufferData(GL_ARRAY_BUFFER, this->vertices.size() * sizeof(glm::vec3), &vertices[0], GL_STATIC_DRAW);
|
||||
|
||||
glGenBuffers(1, &uvbuffer);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, this->uvbuffer);
|
||||
glBufferData(GL_ARRAY_BUFFER, this->uvs.size() * sizeof(glm::vec2), &uvs[0], GL_STATIC_DRAW);
|
||||
|
||||
}
|
||||
|
||||
void plane::draw() {
|
||||
|
||||
glDisable(GL_CULL_FACE);
|
||||
|
||||
// 1st attribute buffer: vertices
|
||||
glEnableVertexAttribArray(0);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, this->vertexbuffer);
|
||||
glVertexAttribPointer(
|
||||
0, // attribute
|
||||
3, // size
|
||||
GL_FLOAT, // type
|
||||
GL_FALSE, // normalized?
|
||||
0, // stride
|
||||
(void*)0 // array buffer offset
|
||||
);
|
||||
|
||||
// 2nd attribute buffer: UVs
|
||||
glEnableVertexAttribArray(1);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, this->uvbuffer);
|
||||
glVertexAttribPointer(
|
||||
1, // attribute
|
||||
2, // size
|
||||
GL_FLOAT, // type
|
||||
GL_FALSE, // normalized?
|
||||
0, // stride
|
||||
(void*)0 // array buffer offset
|
||||
);
|
||||
|
||||
// Draw vertices
|
||||
glDrawArrays(GL_TRIANGLES, 0, this->vertices.size());
|
||||
|
||||
glDisableVertexAttribArray(0);
|
||||
glDisableVertexAttribArray(1);
|
||||
|
||||
}
|
||||
|
||||
void plane::moveX(float x){
|
||||
timestampedCout("dummy moveX");
|
||||
}
|
||||
|
||||
void plane::moveY(float y){
|
||||
timestampedCout("dummy moveY");
|
||||
}
|
||||
|
||||
void plane::moveZ(float z){
|
||||
timestampedCout("dummy moveZ");
|
||||
}
|
||||
33
plane.hpp
Normal file
33
plane.hpp
Normal file
@@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
#include <windows.h>
|
||||
#include "GL/glew.h"
|
||||
#include <gl/gl.h>
|
||||
#include <gl/glu.h>
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
#include "timeh.hpp"
|
||||
#include "GL/glm/glm.hpp"
|
||||
#include "loadOBJ.h"
|
||||
|
||||
class plane {
|
||||
private:
|
||||
float c_x{0};
|
||||
float c_y{0};
|
||||
float c_z{0};
|
||||
float rot_x{0};
|
||||
float rot_y{0};
|
||||
float rot_z{0};
|
||||
std::vector <glm::vec3> vertices;
|
||||
std::vector <glm::vec2> uvs;
|
||||
std::vector <glm::vec3> normals; // Won't be used at the moment.
|
||||
GLuint vertexbuffer;
|
||||
GLuint uvbuffer;
|
||||
const char* modelpath;
|
||||
public:
|
||||
plane(float x, float y, float z, const char* modelpath);
|
||||
void loadModel();
|
||||
void draw();
|
||||
void moveX(float x);
|
||||
void moveY(float y);
|
||||
void moveZ(float z);
|
||||
};
|
||||
91
res/models/mapka.obj
Normal file
91
res/models/mapka.obj
Normal file
@@ -0,0 +1,91 @@
|
||||
# Blender 4.2.1 LTS
|
||||
# www.blender.org
|
||||
o Plane
|
||||
v -25.000000 -0.200000 25.000000
|
||||
v 275.000000 -0.200000 25.000000
|
||||
v -25.000000 -0.200000 -275.000000
|
||||
v 275.000000 -0.200000 -275.000000
|
||||
vn -0.0000 1.0000 -0.0000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
s 0
|
||||
f 2/1/1 3/2/1 1/3/1
|
||||
f 2/1/1 4/4/1 3/2/1
|
||||
o Cube
|
||||
v -15.000000 0.000000 15.000000
|
||||
v -15.000000 40.000000 15.000000
|
||||
v -15.000000 0.000000 -15.000000
|
||||
v -15.000000 40.000000 -15.000000
|
||||
v 15.000000 0.000000 15.000000
|
||||
v 15.000000 40.000000 15.000000
|
||||
v 15.000000 0.000000 -15.000000
|
||||
v 15.000000 40.000000 -15.000000
|
||||
v 15.000000 40.000000 15.000000
|
||||
v 0.000000 52.654823 15.000000
|
||||
v 0.000000 52.654823 -15.000000
|
||||
v -15.000000 20.000000 -15.000000
|
||||
v 0.000000 40.000000 -15.000000
|
||||
v 15.000000 20.000000 -15.000000
|
||||
v 0.000000 20.000000 -15.000000
|
||||
v -15.000000 10.000000 -15.000000
|
||||
v -7.500000 20.000000 -15.000000
|
||||
v 15.000000 10.000000 -15.000000
|
||||
v 7.500000 20.000000 -15.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.6448 0.7643 -0.0000
|
||||
vn 0.6448 0.7643 -0.0000
|
||||
vt 0.625000 0.000000
|
||||
vt 0.500000 0.250000
|
||||
vt 0.437500 0.250000
|
||||
vt 0.625000 0.375000
|
||||
vt 0.500000 0.500000
|
||||
vt 0.500000 0.437500
|
||||
vt 0.625000 0.750000
|
||||
vt 0.375000 0.750000
|
||||
vt 0.375000 1.000000
|
||||
vt 0.750000 0.750000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.437500 0.500000
|
||||
vt 0.625000 0.250000
|
||||
vt 0.500000 0.375000
|
||||
vt 0.500000 0.312500
|
||||
vt 0.375000 0.250000
|
||||
vt 0.750000 0.500000
|
||||
vt 0.625000 0.500000
|
||||
vt 0.375000 0.000000
|
||||
vt 0.375000 0.500000
|
||||
vt 0.625000 1.000000
|
||||
s 0
|
||||
f 6/5/2 16/6/2 20/7/2
|
||||
f 17/8/3 18/9/3 23/10/3
|
||||
f 18/9/4 10/11/4 9/12/4
|
||||
f 10/11/5 5/13/5 9/12/5
|
||||
f 14/14/5 6/15/5 13/11/5
|
||||
f 14/14/6 8/15/6 6/15/6
|
||||
f 22/16/3 23/10/3 18/9/3
|
||||
f 8/17/3 19/18/3 21/19/3
|
||||
f 20/7/3 21/19/3 7/20/3
|
||||
f 17/8/3 15/21/3 12/22/3
|
||||
f 14/14/7 12/22/7 15/21/7
|
||||
f 7/20/2 5/23/2 6/5/2
|
||||
f 6/5/2 8/17/2 16/6/2
|
||||
f 20/7/2 7/20/2 6/5/2
|
||||
f 23/10/3 19/18/3 17/8/3
|
||||
f 17/8/3 12/22/3 18/9/3
|
||||
f 9/12/4 11/24/4 22/16/4
|
||||
f 18/9/4 12/22/4 10/11/4
|
||||
f 9/12/4 22/16/4 18/9/4
|
||||
f 10/11/5 6/25/5 5/13/5
|
||||
f 14/14/6 15/21/6 8/15/6
|
||||
f 22/16/3 11/24/3 23/10/3
|
||||
f 21/19/3 16/6/3 8/17/3
|
||||
f 8/17/3 17/8/3 19/18/3
|
||||
f 20/7/3 16/6/3 21/19/3
|
||||
f 17/8/3 8/15/3 15/21/3
|
||||
f 14/14/7 13/11/7 12/22/7
|
||||
l 10 13
|
||||
71
szescian.cpp
71
szescian.cpp
@@ -1,71 +0,0 @@
|
||||
#include "szescian.h"
|
||||
|
||||
void szescian::create(float x, float y, float z, float KRAWEDZ) {
|
||||
|
||||
this->c_x = x;
|
||||
this->c_y = y;
|
||||
this->c_z = z;
|
||||
|
||||
// Parametry wierzcholkow
|
||||
|
||||
GLfloat sa[3] = { x + 0.0f, y + 0.0f, z + 0.0f };
|
||||
GLfloat sb[3] = { x + KRAWEDZ, y + 0.0f, z + 0.0f };
|
||||
GLfloat sc[3] = { x + KRAWEDZ, y + KRAWEDZ, z + 0.0f };
|
||||
GLfloat sd[3] = { x + 0.0f, y + KRAWEDZ, z + 0.0f };
|
||||
GLfloat se[3] = { x + 0.0f, y + 0.0f, z - KRAWEDZ };
|
||||
GLfloat sf[3] = { x + KRAWEDZ, y + 0.0f, z - KRAWEDZ };
|
||||
GLfloat sg[3] = { x + KRAWEDZ, y + KRAWEDZ, z - KRAWEDZ };
|
||||
GLfloat sh[3] = { x + 0.0f, y + KRAWEDZ, z - KRAWEDZ };
|
||||
|
||||
// Sciany skladowe
|
||||
|
||||
glColor3f(1.0f, 0.0f, 0.0f);
|
||||
glBegin(GL_POLYGON);
|
||||
glVertex3fv(sa);
|
||||
glVertex3fv(sb);
|
||||
glVertex3fv(sc);
|
||||
glVertex3fv(sd);
|
||||
glEnd();
|
||||
|
||||
|
||||
glColor3f(0.0f, 1.0f, 0.0f);
|
||||
glBegin(GL_POLYGON);
|
||||
glVertex3fv(sb);
|
||||
glVertex3fv(sf);
|
||||
glVertex3fv(sg);
|
||||
glVertex3fv(sc);
|
||||
glEnd();
|
||||
|
||||
glColor3f(0.0f, 0.0f, 1.0f);
|
||||
glBegin(GL_POLYGON);
|
||||
glVertex3fv(sf);
|
||||
glVertex3fv(se);
|
||||
glVertex3fv(sh);
|
||||
glVertex3fv(sg);
|
||||
glEnd();
|
||||
|
||||
glColor3f(1.0f, 1.0f, 0.0f);
|
||||
glBegin(GL_POLYGON);
|
||||
glVertex3fv(se);
|
||||
glVertex3fv(sa);
|
||||
glVertex3fv(sd);
|
||||
glVertex3fv(sh);
|
||||
glEnd();
|
||||
|
||||
glColor3f(0.0f, 1.0f, 1.0f);
|
||||
glBegin(GL_POLYGON);
|
||||
glVertex3fv(sd);
|
||||
glVertex3fv(sc);
|
||||
glVertex3fv(sg);
|
||||
glVertex3fv(sh);
|
||||
glEnd();
|
||||
|
||||
glColor3f(1.0f, 0.0f, 1.0f);
|
||||
glBegin(GL_POLYGON);
|
||||
glVertex3fv(sa);
|
||||
glVertex3fv(sb);
|
||||
glVertex3fv(sf);
|
||||
glVertex3fv(se);
|
||||
glEnd();
|
||||
|
||||
}
|
||||
14
szescian.h
14
szescian.h
@@ -1,14 +0,0 @@
|
||||
#pragma once
|
||||
#include <windows.h>
|
||||
#include <gl\gl.h>
|
||||
#include <gl\glu.h>
|
||||
|
||||
class szescian
|
||||
{
|
||||
private:
|
||||
float c_x{0};
|
||||
float c_y{0};
|
||||
float c_z{0};
|
||||
public:
|
||||
void create(float x, float y, float z, float KRAWEDZ);
|
||||
};
|
||||
5
timeh.cpp
Normal file
5
timeh.cpp
Normal file
@@ -0,0 +1,5 @@
|
||||
#include "timeh.hpp"
|
||||
|
||||
std::time_t getTime() {
|
||||
return std::time(nullptr);
|
||||
}
|
||||
Reference in New Issue
Block a user