irr_video_SExposedVideoData* videoData,
const irr_core_rect_s32* sourceRect)
{
- // Color
- irr::video::SColor col = irr::video::SColor(color->a, color->r,
- color->g, color->b);
-
// Video data
// TODO
irr::video::SExposedVideoData vdata = irr::video::SExposedVideoData();
- // Source rect
- irr::core::rect<irr::s32> rect;
- if (sourceRect != NULL)
- {
- rect = irr::core::rect<irr::s32>(sourceRect->x,
- sourceRect->y,
- sourceRect->x2,
- sourceRect->y2);
- }
-
// Begin scene
return ((irr::video::IVideoDriver*)driver)
->beginScene(backBuffer,
zBuffer,
- col,
+ *(irr::video::SColor*)color,
vdata,
- sourceRect != NULL ? &rect : 0);
+ (irr::core::rect<irr::s32>*)sourceRect);
}
void
irr_scene_E_PRIMITIVE_TYPE pType,
irr_video_E_INDEX_TYPE iType)
{
- // Convert vertices
- irr::video::S3DVertex irrVertices[vertexCount];
- for (int i=0; i<vertexCount; i++)
- {
- irr_video_S3DVertex *vertex = (irr_video_S3DVertex*)vertices + i;
- irrVertices[i] =
- irr::video::S3DVertex(vertex->pos.x, vertex->pos.y, vertex->pos.z,
- vertex->normal.x, vertex->normal.y, vertex->normal.z,
- irr::video::SColor(vertex->color.a,
- vertex->color.r,
- vertex->color.g,
- vertex->color.b),
- vertex->tCoords.x, vertex->tCoords.y);
- }
-
- // Convert indices
- size_t indexListSize =
- ((iType == irr_video_EIT_16BIT) ? sizeof(irr::u16) : sizeof(irr::u32)) *
- primCount * 3;
- void* irrIndexList = malloc(indexListSize);
-
- for (int i=0; i<primCount*3; i++)
- {
- if (iType == irr_video_EIT_16BIT)
- {
- uint16_t *index = (uint16_t*)indexList + i;
- ((irr::u16*)irrIndexList)[i] = *index;
- }
- else
- {
- uint32_t *index = (uint32_t*)indexList + i;
- ((irr::u32*)irrIndexList)[i] = *index;
- }
- }
-
((irr::video::IVideoDriver*)driver)
- ->drawVertexPrimitiveList(&irrVertices[0], vertexCount,
- irrIndexList, primCount,
+ ->drawVertexPrimitiveList(vertices, vertexCount,
+ indexList, primCount,
(irr::video::E_VERTEX_TYPE)vType,
(irr::scene::E_PRIMITIVE_TYPE)pType,
(irr::video::E_INDEX_TYPE)iType);
-
- free(irrIndexList);
}
int