hm… nice… but why retained mode if not vertexprogram?
or whats with this?
static float bm[ 16 ];
void glBeginBillboarding( )
{
float m[ 16 ];
glGetFloatv( GL_MODELVIEW_MATRIX, bm );
m[ 0 ] = bm[ 0 ];
m[ 1 ] = bm[ 4 ];
m[ 2 ] = bm[ 8 ];
m[ 4 ] = bm[ 1 ];
m[ 5 ] = bm[ 5 ];
m[ 6 ] = bm[ 9 ];
m[ 8 ] = bm[ 2 ];
m[ 9 ] = bm[ 6 ];
m[ 10 ] = bm[ 10 ];
m[ 3 ] = m[ 7 ] = m[ 11 ] = m[ 12 ] = m[ 13 ] = m[ 14 ] = 0;
m[ 15 ] = 1;
glMultMatrixf( m );
}
void glEndBillboarding( )
{
glLoadMatrixf( bm );
}
void Draw (void)
{
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer
glLoadIdentity (); // Reset The Modelview Matrix
glTranslatef (0.0f, 0.0f, -12.0f); // Translate 6 Units Into The Screen
glRotatef (angle, 0.0f, 1.0f, 0.0f); // Rotate On The Y-Axis By angle
glTranslatef( 0, 0, 6 );
glBegin (GL_QUADS); // Begin Drawing Triangles
glColor3f (1.f, 0.f, 0.f); glVertex3f( -1.0f, -1.0f, 0.0f);
glColor3f (0.f, 1.f, 0.f); glVertex3f( 1.0f,-1.0f, 0.0f);
glColor3f (0.f, 0.f, 1.f); glVertex3f( 1.0f,1.0f, 0.0f);
glColor3f (.5f, .5f, .5f); glVertex3f( -1.0f,1.0f, 0.0f);
glEnd (); // Done Drawing Triangles
glBeginBillboarding( );
glBegin (GL_QUADS); // Begin Drawing Triangles
glColor3f (1.f, 0.f, 0.f); glVertex3f( -1.0f, -1.0f, 0.0f);
glColor3f (0.f, 1.f, 0.f); glVertex3f( 1.0f,-1.0f, 0.0f);
glColor3f (0.f, 0.f, 1.f); glVertex3f( 1.0f,1.0f, 0.0f);
glColor3f (.5f, .5f, .5f); glVertex3f( -1.0f,1.0f, 0.0f);
glEnd (); // Done Drawing Triangles
glEndBillboarding( );
glFlush (); // Flush The GL Rendering Pipeline
}
nehe basecode with this little two funcs you should have nice billboarding…
ok, you have to call the func before rendering to make sure u use the right matrices… but heh… its working…
but ok… working with a vp… thats nice for gf3 fans… i like having it with hwtnl on my gf2… so…