Получение этих выходных данных от моего обратного вызова отладки OpenGl каждый раз, когда вызывается glDrawElements:
[OPENGL] [SEVERITY_LOW] [API] [OTHER] Предупреждение об использовании: общая вершина
массив атрибутов 1 использует указатель с небольшим значением
(0x0000000000000000). Это предназначено для использования в качестве смещения в
объект буфера?
[OPENGL] [SEVERITY_LOW] [API] [OTHER] Предупреждение об использовании: общая вершина
массив атрибутов 2 использует указатель с небольшим значением
(0x0000000000000000). Это предназначено для использования в качестве смещения в
объект буфера?
Код для настройки VAO / VBO:
inline void Mesh::CreateMesh(std::vector<int> _indices, std::vector<float> _verts, std::vector<float> _norms, std::vector<float> _texCoords) {
indices_ = _indices;
vertices_ = _verts;
normals_ = _norms;
texCoords_ = _texCoords;
glGenVertexArrays(1, &vaoId_);
glBindVertexArray(vaoId_);
std::cout << "Mesh::SetupAttribBuffer::Vertex Array Created: " << vaoId_ << std::endl;
glGenBuffers(1, &indicesVboId_);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, indicesVboId_);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indices_.size() * sizeof(int), indices_.data(), GL_STATIC_DRAW);
std::cout << "Mesh::SetupAttribBuffer::Indices Buffer Created: " << indicesVboId_ << std::endl;
verticesVboId_ = SetupAttribBuffer(0, 3, vertices_.data());
//normalsVboId_ = SetupAttribBuffer(1, 3, normals_);
//texCoordsVboId_ = SetupAttribBuffer(2, 2, texCoords_);
glEnableVertexAttribArray(verticesVboId_);
//glEnableVertexAttribArray(normalsVboId_);
//glEnableVertexAttribArray(texCoordsVboId_);
glEnableVertexAttribArray(indicesVboId_);
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glBindVertexArray(0);
}
inline int Mesh::SetupAttribBuffer(int _location, int _components, float _data[]) {
unsigned int bufferId;
glGenBuffers(1, &bufferId);
glBindBuffer(GL_ARRAY_BUFFER, bufferId);
glBufferData(GL_ARRAY_BUFFER, sizeof(_data) * sizeof(float), _data, GL_STATIC_DRAW);
glEnableVertexAttribArray(_location);
glVertexAttribPointer(_location, _components, GL_FLOAT, GL_FALSE, 0, 0);
std::cout << "Mesh::SetupAttribBuffer::Attribute Buffer Created: " << bufferId << std::endl;
return bufferId;
}
Как я вызываю glDrawElements:
glBindVertexArray(mesh->vaoId_);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mesh->indicesVboId_);
glDrawElements(GL_TRIANGLES, mesh->indicesCount(), GL_UNSIGNED_INT, nullptr);
glBindVertexArray(0);
Несмотря на то, что я получаю выходные данные обратного вызова (вверху), моя сетка (треугольник) все еще удается получить хорошо. Мой вопрос: «Есть ли что-то, что мне нужно изменить при настройке моих VAO / VBO, чтобы остановить эти ошибки? Или я должен просто заставить свой метод обратного вызова игнорировать эти типы ошибок?»