Path: utzoo!attcan!uunet!decwrl!sgi!shinobu!odin!horus.esd.sgi.com!thant From: thant@horus.esd.sgi.com (Thant Tessman) Newsgroups: comp.sys.sgi Subject: Re: What is your StereoView aspect ratio? Keywords: stereo Message-ID: <1990Sep6.161632.11329@odin.corp.sgi.com> Date: 6 Sep 90 16:16:32 GMT References: <9009010113.AA17280@chem.chem.ucsd.edu> Sender: news@odin.corp.sgi.com (Net News) Reply-To: thant@horus.esd.sgi.com (Thant Tessman) Organization: Silicon Graphics Inc. Lines: 154 The only thing I can think of is that the settings on your monitor aren't right. I checked again, and so far, two different Mitsubishi monitors stretch the image vertically. Here's the program I used to work out my aspect ratio stuff: Note: With 3.3 the is_stereo() can be replaced with a call to getgdesc(GD_STEREO) stereo.h ------------------------------------------------ /* stereo.h */ #ifndef STEREO_H #define STEREO_H #define YMAXSTEREO 491 #define YOFFSET 532 #endif grid.h -------------------------------------------------- #include #include #include #include "stereo.h" #define LEFT 1 #define RIGHT 2 main() { int dev, val; int monitor; noborder(); prefposition(0, XMAXSCREEN, 0, YMAXSCREEN); winopen("grid"); monitor = getmonitor(); if (is_stereo()) setmonitor(STR_RECT); qdevice(ESCKEY); qdevice(MIDDLEMOUSE); qdevice(WINQUIT); draw_test(); while (1) { switch (dev=qread(&val)) { case ESCKEY: if (val) break; case WINQUIT: setmonitor(monitor); exit(); case REDRAW: draw_test(); break; } } } draw_test() { viewport(0, XMAXSCREEN, 0, YMAXSCREEN); color(BLACK); clear(); color(RED); viewport(0, XMAXSCREEN, 0, YMAXSTEREO); draw_grid(); cmov2i(180, 0); charstr("right"); color(BLUE); viewport(0, XMAXSCREEN, YOFFSET, YOFFSET+YMAXSTEREO); draw_grid(); cmov2i(-200, 0); charstr("left"); } draw_grid() { int i; ortho2(0, XMAXSCREEN.5, 0, YMAXSTEREO.5); recti(0, 0, XMAXSCREEN, YMAXSTEREO); translate(XMAXSCREEN/2.0, YMAXSTEREO/2.0, 0.0); scale(2.0, 1.0, 1.0); for (i = -128; i<=128; i+=32) { move2i(i, -128); draw2i(i, 128); } for (i = -128; i<=128; i+=32) { move2i(-128, i); draw2i(128, i); } circ(0.0, 0.0, YMAXSTEREO/2.0); circ(0.0, 0.0, 8.0); } /* define a way to check if stereo is installed. */ /* For now, use getvideo and setvideo: */ #include #include int is_stereo() { int RV1 = TRUE; long rw1, rw2; int i; /* test to see if DER1_STEREO bit is read/write or read-only */ /* if it is read-only, stereo is installed. */ /* loop makes SURE the bit really behaves as a read/write bit. */ for ( i = 1; i < 10; i++) { rw1 = getvideo(DE_R1); rw1 = rw1 ^ DER1_STEREO; /* flip the stereo bit */ rw2 = rw1; setvideo(DE_R1, rw2); rw2 = getvideo(DE_R1); RV1 = (rw1 == rw2) ? TRUE : FALSE; if (!RV1) break; /* failed to flip the bit */ rw2 = rw2 ^ DER1_STEREO; /* flip the stereo bit back*/ rw1 = rw2; setvideo(DE_R1, rw2); rw2 = getvideo(DE_R1); RV1 = (rw1 == rw2) ? TRUE : FALSE; if (!RV1) break; /* failed to flip the bit back*/ } return (RV1 == TRUE) ? FALSE : TRUE; }