00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "glos.h"
00016 #include <gl\gl.h>
00017 #include <assert.h>
00018
00019
00020
00021 #include "OpenGL\GL_Frame.h"
00022
00023
00024
00025
00026
00027
00028
00029 GL_Frame::GL_Frame (Matrix4x4 right, bool bShow)
00030
00031 : axisLength(3.0)
00032
00033
00034 ,Matrix4x4( right )
00035 ,showFrame(bShow)
00036
00037 {
00038
00039
00040 }
00041
00042
00043 GL_Frame::~GL_Frame()
00044 {
00045
00046
00047 }
00048
00049
00050
00051
00052 void GL_Frame::GLDraw () const
00053 {
00054
00055
00056 ::glLineWidth( 3.0 );
00057
00058 double numbers[ 16 ] ;
00059 for( int i = 0; i < 16; i++ )
00060 {
00061 numbers[ i ] = values[ i % 4 ][ i / 4 ] ;
00062 }
00063 glMultMatrixd( numbers ) ;
00064
00065 unsigned char lighting ;
00066 unsigned char blend ;
00067
00068 glGetBooleanv( GL_LIGHTING, &lighting ) ;
00069 glGetBooleanv( GL_BLEND, &blend ) ;
00070
00071 glDisable( GL_LIGHTING ) ;
00072
00073
00074 if (showFrame)
00075 {
00076 const float alpha = float( 0.3 ) ;
00077 glBegin( GL_LINES ) ;
00078 glColor4d( 1.0, 0.0, 0.0, alpha ) ;
00079 glVertex3d( 0.0, 0.0, 0.0) ;
00080 glVertex3d( axisLength, 0.0, 0.0 ) ;
00081
00082 glColor4d( 0.0, 1.0, 0.0, alpha ) ;
00083 glVertex3d( 0.0, 0.0, 0.0) ;
00084 glVertex3d( 0.0, axisLength, 0.0 ) ;
00085
00086 glColor4d( 0.0, 0.0, 1.0, alpha ) ;
00087 glVertex3d( 0.0, 0.0, 0.0) ;
00088 glVertex3d( 0.0, 0.0, axisLength ) ;
00089 glEnd() ;
00090 }
00091
00092 if( lighting )
00093 {
00094 glEnable( GL_LIGHTING ) ;
00095 }
00096 if( blend )
00097 {
00098 glEnable( GL_BLEND ) ;
00099 }
00100
00101 }
00102
00103 bool GL_Frame::DrawExplicit () const
00104 {
00105
00106 assert( false ) ;
00107 return false ;
00108
00109 }
00110
00111
00112
00113
00114
00115
00116