Я должен отобразить сцену, которая включает в себя различные сетки с openGL. мешите определяются следующим образом:Провести сцену с openGL
struct Mesh {
frame3f frame; // frame
vector<vec3f> pos; // vertex position
vector<vec3f> norm; // vertex normal
vector<vec2f> texcoord; // vertex texcture coordinates
vector<vec3i> triangle; // triangle
vector<vec4i> quad; // quad
Material* mat; // material}
сетка может быть изготовлена из треугольников и четырехугольников, я пытаюсь сделать вершину с этим кодом:
for (auto mesh : scene->meshes)
{
// bind material kd, ks, n
glVertexAttrib3f(material_kd_loc, mesh->mat->kd.x, mesh->mat->kd.y, mesh->mat->kd.z);
glVertexAttrib3f(material_ks_loc, mesh->mat->ks.x, mesh->mat->ks.y, mesh->mat->ks.z);
glVertexAttrib1f(material_n_loc, mesh->mat->n);
// bind mesh frame - use frame_to_matrix
mat4f mesh_mat = frame_to_matrix(mesh->frame);
glUniformMatrix4fv(mesh_frame_loc, 1, GL_TRUE, &mesh_mat[0][0]);
// enable vertex attributes arrays
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
//and set up pointers to the mesh data
glVertexAttribPointer(vertex_pos_loc, mesh->pos.size(), GL_FLOAT, GL_FALSE, 0, mesh->pos.data());
glVertexAttribPointer(vertex_norm_loc, mesh->norm.size(), GL_FLOAT, GL_TRUE, 0, mesh->norm.data());
// draw triangles and quads
if (mesh->triangle.size() != 0){
glDrawElements(GL_TRIANGLES, mesh->pos.size(), GL_UNSIGNED_INT, mesh->triangle.data());
}
if (mesh->quad.size() != 0){
glDrawElements(GL_QUADS, mesh->pos.size(), GL_UNSIGNED_INT, mesh->quad.data());
}
// disable vertex attribute arrays
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
}
} это то, что я рисую (дон «т заботиться о цветах, как я не вычислить их еще)
это то, что я должен видеть, если мой код правильный
Кто-нибудь, как идея о том, где ошибка?
Публикация фактических (взятых из управляемой программы, а не некоторых входных файлов) позиций, содержимого треугольников и квадрантов (они невелики в данном примере). – keltar
камера сосредоточена в 0,0,6 это код, который создает сетки: –
новый Mesh {frame3f {{-offset, offset, 0}, x3f, y3f, z3f}, {{0,1,0 }, {-1, -1,0}, {1, -1,0}}, {z3f, z3f, z3f}, {zero2f, y2f, x2f}, {{0,1,2}}, { }, новый материал {one3f, zero3f, 100}}, ' –