Обычно, при отправке информации о вершине, почти люди будут использовать float или vec2 ~ 4 тип.
Однако GL_MAX_VERTEX_ATTRIBS (макет (расположение = X)) равен 16 на многих графических процессорах.
Если вы хотите использовать много разметок в GLSL, это показывает, что существуют ограничения до 16.
Можно ли отправить вершины в виде массива для решения этой проблемы?
Но, думаю, я не смогу это сделать.
Если хотите сделать это, может быть, необходимо разделить вершины.
Потому что есть много проблем, если написать код, как показано ниже.
// C++ main.cpp
float ExVertices[2][100] = {
{
0.123456... ,
0.123456... ,
0.123456... ,
0.123456... ,
// ...more...
},
{
0.123456... ,
0.123456... ,
0.123456... ,
0.123456... ,
// ...more...
},
};
glGenBuffers(1, &ExVBO);
glBindBuffer(GL_ARRAY_BUFFER, ExVBO);
glBufferData(GL_ARRAY_BUFFER, ????ExVertices????, ????&ExVertices????, GL_STATIC_DRAW); // How should I write ????
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, ExVBO);
glVertexAttribPointer(
0,
1,
GL_FLOAT, // How should I write here? Probably an array of floats?
GL_FALSE,
0,
(void*)0
);
// GLSL Vertex Shader
layout(location = 0) in float[????] in_vertices; // How should I write here?