Изменение функции загрузки из файла
This commit is contained in:
parent
1770c6518b
commit
f751c36aba
@ -9,7 +9,7 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#define DEFAULT_MTL_DIR "./"
|
#define DEFAULT_MTL_DIR "./"
|
||||||
void loadOBJtoVector(const char* filename, std::vector<class Model>& scene, const char* mtl_directory = DEFAULT_MTL_DIR, const char* texture_directory = DEFAULT_MTL_DIR);
|
class GrouptedModel loadOBJtoGroupted(const char* filename, const char* mtl_directory = DEFAULT_MTL_DIR, const char* texture_directory = DEFAULT_MTL_DIR);
|
||||||
|
|
||||||
// Класс определяющий положение, вращение и размер объекта
|
// Класс определяющий положение, вращение и размер объекта
|
||||||
class Movable
|
class Movable
|
||||||
|
@ -197,8 +197,9 @@ inline void hash_combine(std::size_t& seed, const T& v, Rest... rest) {
|
|||||||
hash_combine(seed, rest...);
|
hash_combine(seed, rest...);
|
||||||
}
|
}
|
||||||
|
|
||||||
void loadOBJtoVector(const char* filename, std::vector<Model>& scene, const char* mtl_directory, const char* texture_directory)
|
GrouptedModel loadOBJtoGroupted(const char* filename, const char* mtl_directory, const char* texture_directory)
|
||||||
{
|
{
|
||||||
|
GrouptedModel result;
|
||||||
Model model;
|
Model model;
|
||||||
|
|
||||||
tinyobj::attrib_t attrib;
|
tinyobj::attrib_t attrib;
|
||||||
@ -293,13 +294,15 @@ void loadOBJtoVector(const char* filename, std::vector<Model>& scene, const char
|
|||||||
// И присваиваем текстуры копиям на основании материала
|
// И присваиваем текстуры копиям на основании материала
|
||||||
for (int i = 0; i < materials_range.size()-1; i++)
|
for (int i = 0; i < materials_range.size()-1; i++)
|
||||||
{
|
{
|
||||||
scene.push_back(model); // Создание копии с общим VAO
|
result.parts.push_back(model); // Создание копии с общим VAO
|
||||||
auto s = --scene.end();
|
auto s = --result.parts.end();
|
||||||
s->set_index_range(materials_range[i], materials_range[i+1]-materials_range[i]);
|
s->set_index_range(materials_range[i], materials_range[i+1]-materials_range[i]);
|
||||||
|
|
||||||
Texture diffuse(TEX_DIFFUSE, texture_directory + materials[materials_ids[i]].diffuse_texname);
|
Texture diffuse(TEX_DIFFUSE, texture_directory + materials[materials_ids[i]].diffuse_texname);
|
||||||
s->set_texture(diffuse);
|
s->set_texture(diffuse);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Вызов отрисовки групповой модели
|
// Вызов отрисовки групповой модели
|
||||||
|
@ -190,8 +190,7 @@ int main(void)
|
|||||||
// camera.move({0,0,-20});
|
// camera.move({0,0,-20});
|
||||||
|
|
||||||
// Загрузка сцены из obj файла
|
// Загрузка сцены из obj файла
|
||||||
std::vector<Model> scene;
|
GrouptedModel scene = loadOBJtoGroupted("../resources/models/cubes.obj", "../resources/models/", "../resources/textures/");
|
||||||
loadOBJtoVector("../resources/models/cubes.obj", scene, "../resources/models/", "../resources/textures/");
|
|
||||||
|
|
||||||
// Установка цвета очистки буфера цвета
|
// Установка цвета очистки буфера цвета
|
||||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||||
@ -208,10 +207,7 @@ int main(void)
|
|||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
|
|
||||||
// Тут производится рендер
|
// Тут производится рендер
|
||||||
for (auto& model : scene)
|
scene.render(mvp_uniform);
|
||||||
{
|
|
||||||
model.render(mvp_uniform);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Представление содержимого буфера цепочки показа на окно
|
// Представление содержимого буфера цепочки показа на окно
|
||||||
glfwSwapBuffers(window);
|
glfwSwapBuffers(window);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user