Я пытаюсь сделать простейший треугольник с шейдерами и массивами вершин, но когда я пытаюсь нарисовать массив вершин, ничего не появляется. Это код (Кстати, функция Жеребьевка является называют, я проверил): созданиеOpenGL Vertex Array не отображается?
массива:
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
glGenBuffers(1, &vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
GLfloat verts[] = {
0, 0, /*vertex 1*/ 1, 0, 0, /*color 1*/
0, 100, /*vertex 2*/ 0, 1, 0, /*color 2*/
100, 0, /*vertex 3*/ 0, 0, 1 /*color 3*/
};
glBufferData(GL_ARRAY_BUFFER, 5 * sizeof(GLfloat) * 3, verts, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, sizeof(GLfloat) * 2, GL_FLOAT, false, 0, 0);
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, sizeof(GLfloat) * 3, GL_FLOAT, false, 0, 0);
glBindVertexArray(0);
Массив Рендер:
glBindVertexArray(vao);
glDrawArrays(GL_TRIANGLES, 0, 3);
glBindVertexArray(0);
shader.vert
uniform float u_time;
uniform mat4 u_projMatrix;
in vec2 position;
in vec3 color;
out vec4 vertColor;
void main()
{
gl_Position = u_projMatrix * vec4(position, 0.0, 1.0);
vertColor = vec4(color, 1.0);
}
shader.frag
uniform float u_time;
in vec4 vertColor;
void main()
{
gl_FragColor = vertColor;
}
Проекция Матрица:
glm::mat4 projection = glm::scale(glm::vec3(2.0/800.0, 2.0/600.0, 1.0));
Я не показал весь код в моей программе, но есть что-то, что определенно не так с этим кодом?
я должен был бросить '2 * SizeOf (GLfloat)' в '' недействительным *, но даже тогда он не оказывал ничего. Что-нибудь, что я все еще делаю неправильно? – name
Второй аргумент 'glVertexAttribPointer()' - количество компонентов, а не размер в байтах. –
, если вы не указали шаг, тогда openGL увидит следующие вершины: '0,0'' 1,0' и' 0,0', что не то, что вы хотите –