Это первая функция загрузки в main, с которой нет проблем.
Model obj1(" stuff.obj");
Итак, выше приведен пример класса в другом заголовочном файле, который называется 'obj1'
* 1005.* Этот вызов точно ниже 2-й сетки.Здесь нет проблем. Также я планирую использовать его для загрузки других моделей позже.
// So this is an instance of that same class being called as 'obj2'.
Model obj2(" stuff2.obj");
Ладно, ниже, я собираюсь попробовать анимацию ключевого кадра, установив новый меш, который будет загружен и подготовлен, когдаФункция рисования в MAIN () называется
while (true)
{
if (keystates[SDL_SCANCODE_RCTRL])
{
// This the problem right here below . THE THIRD LOAD It wont work. THIS ME TRYING TO LOAD THE 'obj2' again this time for a new mesh
Model obj2("stuff3.obj");
}
}
ПОЖАЛУЙСТА, ОБРАТИТЕ ВНИМАНИЕ ЧТЕНИЕ ДАННЫХ ИЗ ФАЙЛА OBJ НЕ является проблемой, и одновременно данные организованы и отправлены для обработки VAO & VBO для рисования
Ниже приведен код из файла заголовка, отличного от MAIN.
Итак, вот функция, которая рисует сетку.С этим нет проблем, чтобы вещи появлялись на экране, за исключением случаев, когда я хочу, чтобы новые вещи появлялись с третьей функцией загрузки в main ()
draw mesh()
{
glBindVertexArray(this->VAO);
glDrawElements(GL_TRIANGLES, this->indices.size(), GL_UNSIGNED_INT, 0);
glBindVertexArray(0);
}
Первые две функции загрузки использовали create () для установкидо vbo, vao рисовать объекты на экране.В то время как третий, который потерпел неудачу, использовал NewMesh (), который ниже create ().
void create()
{
// Create buffers/arrays
glGenVertexArrays(1, &this->VAO);
glGenBuffers(1, &this->VBO);
glGenBuffers(1, &this->EBO);
glBindVertexArray(this->VAO);
// Load data into vertex buffers
glBindBuffer(GL_ARRAY_BUFFER, this->VBO);
glBufferData(GL_ARRAY_BUFFER, this->vertices.size() * sizeof(Vertex), &this->vertices[0], GL_DYNAMIC_DRAW); // GL_DYNAMIC_DRAW GL_STATIC_DRAW
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, this->EBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, this->indices.size() * sizeof(GLuint), &this->indices[0], GL_DYNAMIC_DRAW);
// Set the vertex attribute pointers
// Vertex Positions
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid *)0);
// Vertex Normals
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid *)offsetof(Vertex, Normal) );
// Vertex Texture Coords
glEnableVertexAttribArray(2);
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid *)offsetof(Vertex, TexCoords) );
// glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);
}
void NewMesh()
{ // Note NewMesh() does not work.
glBindVertexArray(this->VAO);
glBindBuffer(GL_ARRAY_BUFFER, this->VBO);
glBufferData(GL_ARRAY_BUFFER, this->vertices.size() * sizeof(Vertex), &this->vertices[0], GL_DYNAMIC_DRAW); // GL_DYNAMIC_DRAW GL_STATIC_DRAW
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, this->EBO);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, this->indices.size() * sizeof(GLuint), &this->indices[0], GL_DYNAMIC_DRAW);
// Set the vertex attribute pointers
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid *)0);
// Vertex Normals
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid *)offsetof(Vertex, Normal));
// Vertex Texture Coords
glEnableVertexAttribArray(2);
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (GLvoid *)offsetof(Vertex, TexCoords));
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);
}
`````
WELL THATS IT. COULD SOME ONE PLZ TELL ME WHERE THE MESS UP IS AND GIVE & SHOW ME THE PROPER DIRECTION.
and a demonstration example maybe? That would be very much appreciated.
So its pretty straight forward im having issue with 'ob2' THE 2nd instance of a class to load new models.