mirror of
https://github.com/pspdev/pspsdk.git
synced 2025-12-31 20:56:18 +00:00
Improve sceGuSignal usage
This commit is contained in:
@@ -193,7 +193,7 @@ int main(int argc, char* argv[]) {
|
||||
sceGuBeginObject(GU_VERTEX_32BITF, 8, 0, bbox);
|
||||
}
|
||||
|
||||
sceGuSignal(1, GU_BEHAVIOR_SUSPEND);
|
||||
sceGuSignal(GU_SIGNAL_WAIT, i);
|
||||
|
||||
sceGumPushMatrix();
|
||||
sceGumRotateX(time * 0.5324f);
|
||||
|
||||
@@ -214,10 +214,8 @@ int main(int argc, char* argv[])
|
||||
// init GU and set callbacks
|
||||
sceGuInit();
|
||||
|
||||
// 0x01 - user callback
|
||||
// 0x04 - 'rendering finished' callback
|
||||
sceGuSetCallback(1, &mySignalHandler);
|
||||
sceGuSetCallback(4, &myFinishHandler);
|
||||
sceGuSetCallback(GU_CALLBACK_SIGNAL, &mySignalHandler);
|
||||
sceGuSetCallback(GU_CALLBACK_FINISH, &myFinishHandler);
|
||||
|
||||
// setup GU
|
||||
sceGuStart(GU_DIRECT,list);
|
||||
@@ -246,7 +244,7 @@ int main(int argc, char* argv[])
|
||||
// run sample
|
||||
|
||||
#ifdef USING_SIGNALS
|
||||
sceGuCallMode(1);
|
||||
sceGuCallMode(GU_CALL_SIGNAL);
|
||||
#endif
|
||||
|
||||
// generate callable command-list with texture setup
|
||||
@@ -439,8 +437,7 @@ void render_billboards(unsigned int i)
|
||||
|
||||
#ifdef USING_SIGNALS
|
||||
// send a signal when rendering was completed
|
||||
// signals 0x01..0x03 - seems to be available for custom usage
|
||||
sceGuSignal( 1, nextI );
|
||||
sceGuSignal(GU_SIGNAL_WAIT, nextI);
|
||||
|
||||
// HACK: keeps CPU waiting until all jobs were submitted for GPU
|
||||
if (nextI == g_context.iterationCount)
|
||||
|
||||
@@ -236,43 +236,43 @@ int main(int argc, char** argv) {
|
||||
|
||||
switch(mode) {
|
||||
case 0 :
|
||||
sceGuSignal(GU_BEHAVIOR_SUSPEND, 1);
|
||||
sceGuSignal(GU_SIGNAL_WAIT, 1);
|
||||
sceGumDrawArray(GU_TRIANGLES, GU_VERTEX_32BITF, TORUS_SEGMENTS * TORUS_SLICES * 6, 0, triangleTorus);
|
||||
sceGuSignal(GU_BEHAVIOR_SUSPEND, 2);
|
||||
sceGuSignal(GU_SIGNAL_WAIT, 2);
|
||||
break;
|
||||
|
||||
case 1 :
|
||||
sceGuSignal(GU_BEHAVIOR_SUSPEND, 1);
|
||||
sceGuSignal(GU_SIGNAL_WAIT, 1);
|
||||
sceGumDrawArrayN(GU_TRIANGLE_STRIP, GU_VERTEX_32BITF, TORUS_SLICES*2+2, TORUS_SEGMENTS, 0, tristripTorus);
|
||||
sceGuSignal(GU_BEHAVIOR_SUSPEND, 2);
|
||||
sceGuSignal(GU_SIGNAL_WAIT, 2);
|
||||
break;
|
||||
|
||||
case 2 :
|
||||
sceGuPatchDivide(1, 1);
|
||||
sceGuSignal(GU_BEHAVIOR_SUSPEND, 1);
|
||||
sceGuSignal(GU_SIGNAL_WAIT, 1);
|
||||
sceGumDrawSpline(GU_VERTEX_32BITF, TORUS_SEGMENTS + 3, TORUS_SLICES + 3, GU_FILL_FILL, GU_FILL_FILL, 0, splineTorus);
|
||||
sceGuSignal(GU_BEHAVIOR_SUSPEND, 2);
|
||||
sceGuSignal(GU_SIGNAL_WAIT, 2);
|
||||
break;
|
||||
|
||||
case 3 :
|
||||
sceGuPatchDivide(2, 2);
|
||||
sceGuSignal(GU_BEHAVIOR_SUSPEND, 1);
|
||||
sceGuSignal(GU_SIGNAL_WAIT, 1);
|
||||
sceGumDrawSpline(GU_VERTEX_32BITF, TORUS_SEGMENTS + 3, TORUS_SLICES + 3, GU_FILL_FILL, GU_FILL_FILL, 0, splineTorus);
|
||||
sceGuSignal(GU_BEHAVIOR_SUSPEND, 2);
|
||||
sceGuSignal(GU_SIGNAL_WAIT, 2);
|
||||
break;
|
||||
|
||||
case 4 :
|
||||
sceGuPatchDivide(4, 4);
|
||||
sceGuSignal(GU_BEHAVIOR_SUSPEND, 1);
|
||||
sceGuSignal(GU_SIGNAL_WAIT, 1);
|
||||
sceGumDrawSpline(GU_VERTEX_32BITF, TORUS_SEGMENTS + 3, TORUS_SLICES + 3, GU_FILL_FILL, GU_FILL_FILL, 0, splineTorus);
|
||||
sceGuSignal(GU_BEHAVIOR_SUSPEND, 2);
|
||||
sceGuSignal(GU_SIGNAL_WAIT, 2);
|
||||
break;
|
||||
|
||||
default :
|
||||
sceGuPatchDivide(8, 8);
|
||||
sceGuSignal(GU_BEHAVIOR_SUSPEND, 1);
|
||||
sceGuSignal(GU_SIGNAL_WAIT, 1);
|
||||
sceGumDrawSpline(GU_VERTEX_32BITF, TORUS_SEGMENTS + 3, TORUS_SLICES + 3, GU_FILL_FILL, GU_FILL_FILL, 0, splineTorus);
|
||||
sceGuSignal(GU_BEHAVIOR_SUSPEND, 2);
|
||||
sceGuSignal(GU_SIGNAL_WAIT, 2);
|
||||
break;
|
||||
}
|
||||
sceGuFinish();
|
||||
|
||||
Reference in New Issue
Block a user