У меня есть массив вершин Nx4, который я хотел бы построить, используя glVertexArray
и glDrawArray
. как 2D-график рассеяния. В настоящее время я инициализирую массив следующим образом:
GLint data[4][MAX_N_POINT];
for (int j=0; j<MAX_N_POINT; j++)
{
data[j][0] = 200 + rand()%20 - 10; // X Dimension
data[j][1] = 400 + rand()%20 - 10; // Y Dimension
data[j][2] = 600 + rand()%20 - 10; // Z Dimension
data[j][3] = 1; // W Dimension
}
Затем я рисую 2d разброс с помощью:
glVertexPointer(4, GL_INT, 0, data);
glDrawArrays(GL_POINTS, 0, nPlot);
Который правильно отображается как это:
примечание: цветные квадраты на заднем плане, так что я могу легко судить, падают ли точки в правильном месте
Однако, поскольку я хочу только двухмерный график, я бы хотел пропустить 2 неиспользуемых измерения. Я попытался сказать glVertexPointer
, что мои вершины имеют только 2 точки, а затем установил шаг между вершинами также равным 2, но, похоже, это не работает так, как я думал.
glVertexPointer(2, GL_INT, 2, data2);
glDrawArrays(GL_POINTS, 0, nPlot);
Однако, когда я рисую это, я получаю совсем другой результат с точками, отображаемыми в XxY, YxZ, ZxW:
Правильно ли я понял правильную функцию переменной шага? Если нет, то как я могу правильно установить шаг, чтобы нижний график напоминал верхний график?