Steve McGee (smcgee++at++psl.nmsu.edu)
Wed, 04 Feb 1998 08:36:15 -0700
A somtime performer with a problem here.
I've got a simple little app from which I'm optionally
using pfuSaveImage to capture frames.
The resulting image has only a red component witness:
ftp://shamu.psl.nmsu.edu/pub/temp/test_0005.rgb
Any ideas?
Is there a mode I need to set?
Particulars and pertinent code below:
uname -a: IRIX64 banshee 6.2 03131016 IP19
versions | grep -i performer
I performer_dev 10/24/96 Performer2.0 Development Software
I performer_dev.books 10/24/96 IRIS InSight Books, Release 2.2
I performer_dev.books.Perf_PG 10/24/96 Performer2.0 Programming Guide
I performer_dev.man 10/24/96 Performer2.0 Documentation
I performer_dev.man.c 10/24/96 Performer2.0 C Man Pages
I performer_dev.man.c++ 10/24/96 Performer2.0 C++ Man Pages
I performer_dev.man.common 10/24/96 Performer2.0 Non-Language-Specific Man
Pages
I performer_dev.man.relnotes 10/24/96 Performer2.0 Release Notes
I performer_dev.src 10/24/96 Performer2.0 Sample and Loader Code
I performer_dev.src.loader 10/24/96 Performer2.0 Loader Code
I performer_dev.src.sample 10/24/96 Performer2.0 Sample Code
I performer_dev.sw 10/24/96 Performer2.0 Development Environment
I performer_dev.sw.common_debug_performer 10/24/96 Performer2.0
GL-independent Debug DSOs
I performer_dev.sw.hdr 10/24/96 Performer2.0 Headers
I performer_dev.sw.igl_debug_performer 10/24/96 Performer2.0 IrisGL Debug
DSOs
I performer_dev.sw.ogl_debug_performer 10/24/96 Performer2.0 OpenGL Debug
DSOs
I performer_dev.sw32 10/24/96 Performer2.0 N32 Development Environment
I performer_dev.sw32.common_debug_performer 10/24/96 Performer2.0
GL-independent Debug DSOs (n32)
I performer_dev.sw32.igl_debug_performer 10/24/96 Performer2.0 IrisGL Debug
DSOs (n32)
I performer_dev.sw32.ogl_debug_performer 10/24/96 Performer2.0 OpenGL Debug
DSOs (n32)
I performer_dev.sw64 10/24/96 Performer2.0 N64 Development Environment
I performer_dev.sw64.debug_performer 10/24/96 Performer2.0 Debug DSOs (n64)
I performer_eoe 10/24/96 Performer2.0.1 Execution Environment
I performer_eoe.man 10/24/96 Performer2.0.1 EOE Documentation
I performer_eoe.man.relnotes 10/24/96 Performer2.0.1 EOE Release Notes
I performer_eoe.sw 10/24/96 Performer2.0.1 Execution Software
I performer_eoe.sw.common_performer 10/24/96 Performer2.0.1 GL-independent
DSOs
I performer_eoe.sw.data 10/24/96 Performer2.0.1 Sample Data and Fonts
I performer_eoe.sw.demo 10/24/96 Performer2.0.1 Demos
I performer_eoe.sw.igl_performer 10/24/96 Performer2.0.1 IrisGL DSOs
I performer_eoe.sw.ogl_performer 10/24/96 Performer2.0.1 OpenGL DSOs
I performer_eoe.sw.performer1_2 10/24/96 Performer 1.2 Compatibility DSOs
I performer_eoe.sw32 10/24/96 Performer2.0.1 N32 Execution Software
I performer_eoe.sw32.common_performer 10/24/96 Performer2.0.1 GL-independent
DSOs (n32)
I performer_eoe.sw32.igl_performer 10/24/96 Performer2.0.1 IrisGL DSOs (n32)
I performer_eoe.sw32.ogl_performer 10/24/96 Performer2.0.1 OpenGL DSOs (n32)
I performer_eoe.sw64 10/24/96 Performer2.0.1 N64 Execution Software
I performer_eoe.sw64.performer 10/24/96 Performer2.0.1 DSOs (n64)
#include <stdlib.h>
#include <stdio.h>
#include <Performer/pf/pfChannel.h>
#include <Performer/pf/pfLightSource.h>
#include <Performer/pf/pfNode.h>
#include <Performer/pf/pfScene.h>
#include <Performer/pf.h>
#include <Performer/image.h>
#include <Performer/pfutil.h>
#include <Performer/pfdu.h>
#include "scenario.h"
void SaveFrame( char *FileRoot, int n, int WinX, int WinY );
void main( int argc, char *argv[])
{
char *ScenarioFileName, *ImageFileRoot;
double ImageTimeIncrement = .05;
int SaveImages = 0, ImageFileNum = 0;
int screen;
int maxScreenX, maxScreenY;
Display *dsp;
pfScene *scene;
pfGeoState *gst;
pfSphere bsphere;
pfCoord view;
int i, NTSC=0;
double t = 0.0;
//---------------------------------------------------------------------
// Command args...
if(argc < 3){
printf( "Usage: SimpleScenario [I root inc][-N ] -S ScenarioFile.ext\n");
printf( "where:\n");
printf( " -I ImageFileRoot TimeIncrement\n");
printf( " -N NTSC size\n");
printf( " -S ScenarioFileName\n");
exit(1);
}
for(i=1; i<argc; i++){
switch( argv[i][0] )
{
case '-':
switch( argv[i][1] )
{
case 'I':
if( i < argc-2 ){
i++;
ImageFileRoot = argv[i];
i++;
ImageTimeIncrement = atof( argv[i] );
SaveImages = 1;
}
case 'N':
NTSC = 1;
break;
case 'S':
if( i < argc-1 ){
i++;
ScenarioFileName = argv[i];
}
break;
}
break;
default:
break;
}
}
//---------------------------------------------------------------------
// Init...
pfInit();
pfMultiprocess( PFMP_DEFAULT );
pfdInitConverter( ".wrl" );
pfdInitConverter( ".iv" );
pfdInitConverter( ".flt" );
pfdInitConverter( ".sv" );
pfdInitConverter( ".obj" );
pfConfig();
scene = new pfScene;
gst = new pfGeoState;
gst->setMode(PFSTATE_ENLIGHTING, PF_ON);
scene->setGState(gst);
pfNotifyLevel( PFNFY_FP_DEBUG );
//---------------------------------------------------------------------
// Configure and open GL window
pfPipe *p = pfGetPipe(0);
pfPipeWindow *pw = new pfPipeWindow(p);
pw->setWinType(PFPWIN_TYPE_X);
pw->setName("IRIS Performer");
dsp = pfGetCurWSConnection(); /* get display for machine config queries */
screen = DefaultScreen( dsp );
maxScreenX = DisplayWidth(dsp, screen);
maxScreenY = DisplayHeight(dsp, screen);
if( NTSC )
pw->setOriginSize(0,0, 640, 480 );
else
pw->setOriginSize(0,0, maxScreenX, maxScreenY );
pw->open();
//---------------------------------------------------------------------
// Create and configure a pfChannel.
pfChannel *chan = new pfChannel(p);
chan->setScene(scene);
chan->setFOV(45.0f, 0.0f);
pfEarthSky *esky = new pfEarthSky();
esky->setMode(PFES_BUFFER_CLEAR, PFES_FAST);
// esky->setColor(PFES_CLEAR, 0.2f, 0.2f, 0.8f, 1.0f);
chan->setESky(esky);
//---------------------------------------------------------------------
// Create the Scenario...
Scenario scenario = Scenario( ScenarioFileName, scene );
//---------------------------------------------------------------------
// determine extent of scene's geometry
scene->getBound(&bsphere);
chan->setNearFar(1.0f, 50.0f * bsphere.radius);
//-------------------------------------------------------------------------
// Update the scenario...
// Splash stuff here...
for(i=0; i<10; i++){
pfSync();
pfFrame();
}
if( SaveImages )
scenario.NumSequences = 1;
else
pfInitClock( scenario.StartTime );
for(i=0; i<scenario.NumSequences; i++){
for(;;){
if( SaveImages ){
t = scenario.StartTime + (double)ImageFileNum * ImageTimeIncrement;
}
else{
t = pfGetTime();
}
if( t > scenario.StopTime )
break;
scenario.Update( (double)t );
view.hpr.set( scenario.EyeH, scenario.EyeP, scenario.EyeR );
view.xyz.set( scenario.EyeX, scenario.EyeY, scenario.EyeZ );
chan->setView(view.xyz, view.hpr);
pfSync();
pfFrame();
if( SaveImages ){
int WinX, WinY;
pw->getSize( &WinX, &WinY );
SaveFrame( ImageFileRoot, ImageFileNum++, WinX-1, WinY-1 );
}
}
}
//-------------------------------------------------------------------------
pfExit();
}
void SaveFrame( char *FileRoot, int n, int WinX, int WinY )
{
char name[256];
int i;
sprintf( name, "%s%4.4d", FileRoot, n );
printf("Creating file: %s\n", name );
i = pfuSaveImage( name, 0,0, WinX,WinY, 0 );
if( !i )
printf("error writing: %s\n",name );
}
-- -------------------------------------------------------------- Steve McGee smcgee++at++psl.nmsu.edu --------------------------------------------------------------
======================================================================= List Archives, FAQ, FTP: http://www.sgi.com/Technology/Performer/ Submissions: info-performer++at++sgi.com Admin. requests: info-performer-request++at++sgi.com
This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:56:44 PDT