У меня есть вопрос об OpenGL 3.0, почему я не могу что-то нарисовать, когда мой массив вершин инициализирован как
float * vertices;
int size = 100; // size of the vertices array
float * vertices = (float *) malloc (size*sizeof(float));
Я выделил память и инициализировал все значения в массиве до 0.0, но, похоже, мой буфер вершин читает только первый элемент массива вершин.Принимая во внимание, что когда я инициализирую массив следующим образом:
float vertices[size];
все вершины читаются и отображаются как ожидалось.
Вот как я указываю свой буфер вершин и передаю данные в буфер:
unsigned int VBO;
glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STREAM_DRAW);
GLint posAttrib = glGetAttribLocation(ourShader.ID, "aPos");
// iterpreting data from buffer
glVertexAttribPointer(posAttrib, 3, GL_FLOAT, GL_FALSE, 3* sizeof(float), (void*)0);
glEnableVertexAttribArray(0);