static bool get(LLVertexBuffer& vbo, strider_t& strider, S32 index) { vbo.mapBuffer(); if (type == LLVertexBuffer::TYPE_INDEX) { S32 stride = sizeof(T); strider = (T*)(vbo.getMappedIndices() + index*stride); strider.setStride(0); return TRUE; } else if (vbo.hasDataType(type)) { S32 stride = vbo.getStride(); strider = (T*)(vbo.getMappedData() + vbo.getOffset(type) + index*stride); strider.setStride(stride); return TRUE; } else { llerrs << "VertexBufferStrider could not find valid vertex data." << llendl; } return FALSE; }
static bool get(LLVertexBuffer& vbo, strider_t& strider, S32 index) { if (type == LLVertexBuffer::TYPE_INDEX) { volatile U8* ptr = vbo.mapIndexBuffer(index); if (ptr == NULL) { llwarns << "mapIndexBuffer failed!" << llendl; return FALSE; } strider = (T*)ptr; strider.setStride(0); strider.setTypeSize(0); return TRUE; } else if (vbo.hasDataType(type)) { S32 stride = vbo.getStride(type); volatile U8* ptr = vbo.mapVertexBuffer(type,index); if (ptr == NULL) { llwarns << "mapVertexBuffer failed!" << llendl; return FALSE; } strider = (T*)ptr; strider.setStride(stride); strider.setTypeSize(LLVertexBuffer::sTypeSize[type]); return TRUE; } else { llerrs << "VertexBufferStrider could not find valid vertex data." << llendl; } return FALSE; }