2016-03-25 4 views

ответ

1

Это чувствует, как взломать, но вы можете явно задать параметр glVertexAttribPointerstride в размере одного float.

В принципе, всякий раз, когда GL извлекает вершину с индексом i, он будет использовать адрес offset + i * stride. 0, который вы используете в настоящее время в качестве параметра stride, представляет собой удобный ярлык, означающий плотно упакованный массив, поэтому он будет эквивалентен 2 * sizeof(GLfloat) в вашем случае, но в GL нет ничего, что мешает вам установить шаг ниже этого значения плотно :

glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(GLfloat), 0); 
+0

Это ответ на вопрос, byt У меня все еще проблема, я хочу получить доступ к предыдущим значениям вершин в шейдере, мне нужен только последний. Вы правы, у него что-то вроде взлома, есть ли лучший способ? – user2170324

+0

@derhass, если вам нужно установить шаг в плотно упакованном массиве vec2, шаг должен быть: 2 * sizeof (GLfloat), а не sizeof (GLfloat), как в вашем коде. – wangdq

+0

@wangdq: это правда, но это не то, о чем был вопрос - и ответ. Я прямо заявил: «Но в GL нет ничего, что мешает вам установить шаг ниже этого значения плотно упакованного массива:». – derhass