#include "lazik.hpp" //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:"); 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."); //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); 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_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); 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()); // 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"); } void lazik::moveY(float y){ timestampedCout("dummy moveY"); } void lazik::moveZ(float z){ timestampedCout("dummy moveZ"); } void lazik::moveXYZ(float x, float y, float z){ // TODO: modyfikować wektor z koordynatami oraz c_x, c_y, c_z timestampedCout("dummy moveXYZ"); }