Хорошо, я обнаружил проблему.
Если вы определите больше значений в ваших данных вершин (по вершинам), например, сделав изменение в этом формате:
position: x va0.x
y va0.y
z va0.z
w va0.w
color: r va1.r
g va1.g
b va1.b
a va1.a
что-то вроде этого:
position: x va0.x
y va0.y
z va0.z
w va0.w
color: r va1.r
g va1.g
b va1.b
a va1.a
uv: u va2.x
v va2.y
Отлично ... Вы добавили новый регистр в микс.Но то, что вам нужно сделать, это:
Убедитесь, что передали правильные значения в:
context3D.createVertexBuffer(numOfVertices, vertexDataLength);
и ...
uploadFromVector(_vertexData, 0, numOfVertices);
Убедитесь, что вы установили правильные смещения в своих вызовах:
context3D.setVertexBufferAt(2, vertexBuffer, 8, Context3DVertexBufferFormat.FLOAT_4);
- Последнее, но, конечно, не в последнюю очередь (именно то, чего мне не хватало) ... используйте этот регистр в своем шейдере!
Если вы добавили новый атрибут вершины, но вы не используете его в своем коде AGAL ... онне будет отображаться!
Надеюсь, это сэкономит время, когда другие будут удивляться, где они ошиблись со своими шейдерами!
Примечание: я знаю, здравый смысл - если вы что-то создаете, почему быВы используете это в любом случае?Я тестировал, работал ли предыдущий шейдер с дополнительными данными.Это так, пока я не назначаю свой новый атрибут вершины (va2) в миксе.Поэтому, если вы тестируете, убедитесь, что вы используете setVertexBufferAt(...)
только с теми входными регистрами, которые вы фактически используете.