Angus Dorbie (dorbie++at++bitch.reading.sgi.com)
Thu, 2 Nov 1995 16:43:31 +0100
Tyada!
This is modified from "nextfly" which comes or came with performer 2.0, the
part which writes a text string to the overlay planes has been replaced with
a circular window + crosshairs, it's even in Open GL. Call this from your
draw process.
Rgds,
Angus.
static void
OverlayHUD(pfPipeWindow *pw)
{
double f;
static int mapped = 0;
pfWindow *pwOver = pfGetPWinOverlayWin(pw);
float new_x = 0.0f, new_y = 0.0f;
if (pwOver)
{
pfSelectWin(pwOver);
if (!mapped)
{
static pfVec3 clrs[] = {
{0.0f, 0.0f, 0.0f}, /* black */
{0.8f, 0.8f, 0.6f}, /* yellow/white */
};
Display *dsp = pfGetCurWSConnection();
Window xowin = pfGetWinWSDrawable(pwOver);
pfuGLXMapcolors((pfuXDisplay*) dsp, xowin, clrs, 1, 2);
mapped = 1;
}
}
else
return;
glPushMatrix();
glLoadIdentity();
glDisable(GL_CULL_FACE);
glDisable(GL_DEPTH_TEST);
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
/* Clear overlay planes to black in entire window */
glClearIndex(1);
glClear(GL_COLOR_BUFFER_BIT);
glIndexi(0);
glBegin(GL_TRIANGLE_FAN);
for(f = 0.0; f< 359.5; f+=1.0)
{
pfSinCos((float)f, &new_x, &new_y);
glVertex2f(new_x, new_y);
}
glEnd();
glIndexi(2);
glBegin(GL_TRIANGLE_FAN);
for(f = 0.0; f< 359.5; f+=10.0)
{
pfSinCos((float)f, &new_x, &new_y);
glVertex2f(-.8 + new_x*.07f, .8 + new_y*.07f);
}
glEnd();
glIndexi(1);
glBegin(GL_LINES);
glVertex2f(0.0f, 1.0f);
glVertex2f(0.0f, 0.045f);
glVertex2f(0.0f, -1.0f);
glVertex2f(0.0f, -0.045f);
glVertex2f(1.0f, 0.0f);
glVertex2f(0.045f, 0.0f);
glVertex2f(-1.0f, 0.0f);
glVertex2f(-0.045f, 0.0f);
glEnd();
glPointSize(2.0f);
glBegin(GL_POINTS);
glVertex2f(0.0f, 0.0f);
glEnd();
glPointSize(1.0f);
glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glPopMatrix();
pfSelectPWin(pw);
}
-- Angus Dorbie, Silicon Graphics Ltd, UK dorbie++at++reading.sgi.com
This archive was generated by hypermail 2.0b2 on Mon Aug 10 1998 - 17:52:00 PDT