void drawBG()
{
	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0xFF);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0x550055);
	sceGuEnable(GU_TEXTURE_2D);
	sceGuTexMode(GU_PSM_T8, 0, 0, GU_FALSE);
	sceGuTexFunc(GU_TFX_DECAL, GU_TCC_RGBA);
	sceGuTexImage(0, 4, 4, 16, bgData);

	sceGuDrawArray(GU_SPRITES, GU_TEXTURE_16BIT | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 2, NULL, bg);
}
void draw()
{
	int x = 10, y = 10;

	sceDisplaySetMode(0, SCR_WIDTH, SCR_HEIGHT);
	sceGuStart(GU_DIRECT, list);
	sceGuClear(GU_COLOR_BUFFER_BIT);

	sceGuClutMode(GU_PSM_8888, 0, 0xFF, 0);
	sceGuClutLoad(1, clut);
	
	drawBG();

	// Reset things.
	sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 0);
	sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x00);
	sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0x000000);
	sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x00);

	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0);
	nextBox(&x, &y);

	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0xFF);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFF0000);
	nextBox(&x, &y);

	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0x00FF00);
	nextBox(&x, &y);
	
	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0x0000FF);
	nextBox(&x, &y);
	
	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0);
	nextBoxHasColor(&x, &y, HASCOLOR_RGBA);

	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, GU_AMBIENT);
	sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x00);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFF0000);
	sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0x0000FF);
	sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x00);
	sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1);
	nextBoxHasColor(&x, &y, HASCOLOR_RGBA);

	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0xFF);
	sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x80);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFFFFFF);
	sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0xFFFFFF);
	sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x80);
	sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1);
	nextBoxHasColor(&x, &y, HASCOLOR_RGBA);

	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0);
	nextBoxHasColor(&x, &y, HASCOLOR_RGBA_TRANSPARENT);

	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, GU_AMBIENT);
	sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x0);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFF0000);
	sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0x0000FF);
	sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x0);
	sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1);
	nextBoxHasColor(&x, &y, HASCOLOR_RGBA_TRANSPARENT);

	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0xFF);
	sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x10);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFFFFFF);
	sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0xFFFFFF);
	sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x10);
	sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1);
	nextBoxHasColor(&x, &y, HASCOLOR_RGBA_TRANSPARENT);

	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0);
	nextBoxHasColor(&x, &y, HASCOLOR_RGB);

	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, GU_AMBIENT);
	sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x0);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFF0000);
	sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0x0000FF);
	sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x0);
	sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1);
	nextBoxHasColor(&x, &y, HASCOLOR_RGB);

	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0xFF);
	sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x10);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFFFFFF);
	sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0xFFFFFF);
	sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x10);
	sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1);
	nextBoxHasColor(&x, &y, HASCOLOR_RGB);

	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0);
	nextBoxHasColor(&x, &y, HASCOLOR_RGB_TRANSPARENT);

	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, GU_AMBIENT);
	sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x0);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFF0000);
	sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0x0000FF);
	sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x0);
	sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1);
	nextBoxHasColor(&x, &y, HASCOLOR_RGB_TRANSPARENT);

	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0xFF);
	sceGuSendCommandi(GE_CMD_MATERIALALPHA, 0x10);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0xFFFFFF);
	sceGuSendCommandi(GE_CMD_AMBIENTCOLOR, 0xFFFFFF);
	sceGuSendCommandi(GE_CMD_AMBIENTALPHA, 0x10);
	sceGuSendCommandi(GE_CMD_LIGHTINGENABLE, 1);
	nextBoxHasColor(&x, &y, HASCOLOR_RGB_TRANSPARENT);

	sceGuSendCommandi(GE_CMD_MATERIALUPDATE, 0);
	sceGuSendCommandi(GE_CMD_MATERIALAMBIENT, 0);
	nextBox(&x, &y);

	/*ScePspFVector3 pos = {x, y, 0};
	sceGuLight(0, GU_DIRECTIONAL, GU_AMBIENT_AND_DIFFUSE, &pos);
	nextBox(&x, &y);

	pos.x = x; pos.y = y;
	sceGuLight(0, GU_DIRECTIONAL, GU_AMBIENT_AND_DIFFUSE, &pos);
	sceGuLightMode(GU_SINGLE_COLOR);
	sceGuLightColor(0, GU_AMBIENT, 0x00FF00);
	sceGuLightAtt(0, 1.0, 1.0, 1.0);
	nextBox(&x, &y);*/

	sceGuFinish();
	sceGuSync(GU_SYNC_LIST, GU_SYNC_WHAT_DONE);
	sceGuSync(0, 0);

	sceDisplayWaitVblankStart();
}
Beispiel #3
0
void draw() {
	startFrame();

	sceGuTexMode(GU_PSM_T8, 0, 0, GU_FALSE);
	sceGuTexFilter(GU_NEAREST, GU_NEAREST);
	sceGuTexFunc(GU_TFX_DECAL, GU_TCC_RGB);
	sceGuClutMode(GU_PSM_8888, 0, 0xFF, 0);
	sceGuTexImage(0, 2, 2, 16, imageDataPatch);

	sceGuClutLoad(1, clutRGBY);

	sceGuPatchPrim(GU_TRIANGLE_STRIP);
	sceGuPatchDivide(16, 16);
	sceGuPatchFrontFace(GU_CW);

	sceGuDisable(GU_TEXTURE_2D);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices1_simple);

	// Let's see how UVs are interpolated.  Simple bilinear will fail here.
	sceGuEnable(GU_TEXTURE_2D);
	sceGuDrawBezier(GU_TEXTURE_16BIT | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices2_uvs);

	sceGuDisable(GU_TEXTURE_2D);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices3_colors);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices4_pos);

	// Other primitive types.
	sceGuSendCommandi(55, 1);
	sceGuPatchDivide(4, 4);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices5_lines);

	sceGuSendCommandi(55, 2);
	sceGuPatchDivide(4, 4);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices6_points);

	sceGuSendCommandi(55, 3);
	sceGuPatchDivide(4, 4);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices7_prim3);

	sceGuSendCommandi(55, 4);
	sceGuPatchDivide(4, 4);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices8_prim4);

	sceGuPatchPrim(GU_TRIANGLE_STRIP);
	sceGuShadeModel(GU_FLAT);
	sceGuPatchDivide(1, 1);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices9_div1);
	sceGuPatchDivide(1, 2);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices10_div1_2);
	sceGuPatchDivide(2, 2);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices11_div2);

	sceGuPatchDivide(4, 4);
	sceGuShadeModel(GU_SMOOTH);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 2, NULL, vertices12_4x2);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 5, NULL, vertices13_4x5);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 8, NULL, vertices14_4x8);

	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D | GU_INDEX_8BIT, 4, 4, indices15_inds8, vertices15_inds8);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D | GU_INDEX_16BIT, 4, 4, indices16_inds16, vertices16_inds16);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D | GU_INDEX_BITS, 4, 4, indices17_inds32, vertices17_inds32);

	// Does the vertex pointer increment?
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, vertices18_19_inc);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D, 4, 4, NULL, NULL);
	// And indices?
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D | GU_INDEX_8BIT, 4, 4, indices20_21_ind_inc, vertices20_21_ind_inc);
	sceGuDrawBezier(GU_COLOR_8888 | GU_VERTEX_16BIT | GU_TRANSFORM_2D | GU_INDEX_8BIT, 4, 4, NULL, NULL);

	endFrame();
}