Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern void blitRotateToScreen(Image* source, int dx, int dy, float sW, float sH);
- extern void blitRotateToScreen(Image* source, int dx, int dy, float sW, float sH)
- {
- if (!initialized) return;
- sceKernelDcacheWritebackInvalidateAll();
- guStart();
- sceGuTexImage(0, source->textureWidth, source->textureHeight, source->textureWidth, (void*) source->data);
- float u = 1.0f / ((float)source->textureWidth);
- float v = 1.0f / ((float)source->textureHeight);
- sceGuTexScale(u, v);
- int j = 0;
- while (j < source->imageWidth) {
- Vertex* vertices = (Vertex*) sceGuGetMemory(2 * sizeof(Vertex));
- int sliceWidth = 64;
- if (j + sliceWidth > source->imageWidth) sliceWidth = source->imageWidth - j;
- vertices[0].u = j;
- vertices[0].v = 0;
- vertices[0].x = (dx + j)*sW;
- vertices[0].y = dy*sH;
- vertices[0].z = 0;
- vertices[1].u = j + sliceWidth;
- vertices[1].v = source->imageHeight;
- vertices[1].x = (dx + j + sliceWidth)*sW;
- vertices[1].y = (dy + source->imageHeight)*sH;
- vertices[1].z = 0;
- sceGuDrawArray(GU_SPRITES, GU_TEXTURE_16BIT | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 2, 0, vertices);
- j += sliceWidth;
- }
- sceGuFinish();
- sceGuSync(0, 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement