Анализируя ваши данные, кажется, что вы делаете:
SetMemblockInt(memblock,0,3) //3 vertices
SetMemblockInt(memblock,4,3) //3 indices
SetMemblockint(memblock,8,2) //2 attributes, pos+uv
SetMemblockInt(memblock,12,20) // number bytes per vertex
SetMemblockInt(memblock,16,48) // vertex-data offset
SetMemblockInt(memblock,20,108) // indices-data offset
для настройки заголовка, затем:
SetMemBlockInt(memblock,24,0x0C000300) // float, 3 components, no normalizing, position
SetMemblockString(memblock,28,"position")
SetMemBlockInt(memblock,40,0x04000201) // unsigned byte, 2 components, no normalizing, uv
SetMemblockString(memblock,44,"uv")
, чтобы установить информацию об атрибутах и, наконец, сбросить данные вершин / индексов, где вы используете смещения 48
, 108
. Кажется, смещения всего дампа правильные (если я рецензирую, ничего не пропустил), поэтому я угадаю здесь:
- Вы используете
unsigned byte
в качестве типа данных для UV-координат вместо float
, может быть, это ошибка?
- Положение ваших вершин действительно подозрительно, и, возможно, ваш цикл for использует неправильные смещения / места в памяти?
Это просто предположение, и, глядя на дамп памяти, нелегко найти ошибку, может быть, если вы разместите реальный код, я мог бы сделать более правильные предположения
РЕДАКТИРОВАТЬ: Кажется, вы вынуждены использовать правильные типы данных для атрибутов вершин, хороший совет, рассмотрев типы возврата Mesh геттеров, то есть:
float GetMeshMemblockVertexNormalX( memID, vertexIndex )
float GetMeshMemblockVertexNormalY( memID, vertexIndex )
float GetMeshMemblockVertexNormalZ( memID, vertexIndex )
float GetMeshMemblockVertexU( memID, vertexIndex )
float GetMeshMemblockVertexV( memID, vertexIndex )
float GetMeshMemblockVertexX( memID, vertexIndex )
float GetMeshMemblockVertexY( memID, vertexIndex )
float GetMeshMemblockVertexZ( memID, vertexIndex )
integer GetMeshMemblockVertexAlpha( memID, vertexIndex )
integer GetMeshMemblockVertexBlue( memID, vertexIndex )
integer GetMeshMemblockVertexGreen( memID, vertexIndex )
integer GetMeshMemblockVertexRed( memID, vertexIndex )
Кроме того, убедитесь, что вы используете функции Error , чтобы узнать больше о типе ошибок, которые вы получаете