From: Tim R. <ti...@us...> - 2004-08-07 06:59:04
|
Update of /cvsroot/csdopenglnet/csdOpenGL/Cg In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv649/Cg Modified Files: demo.cs Log Message: missing cgGLEnable-statements Index: demo.cs =================================================================== RCS file: /cvsroot/csdopenglnet/csdOpenGL/Cg/demo.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** demo.cs 6 Aug 2004 12:13:34 -0000 1.3 --- demo.cs 7 Aug 2004 06:58:39 -0000 1.4 *************** *** 9,22 **** public class Demo : Cg { ! IntPtr context, vertexProgram, fragmentProgram; ! CGprofile vertexProfile, fragmentProfile; ! int curTime = 0; ! bool haveLoadedPrograms = false; ! int res=512; ! float[] P, N, uv; ! uint[] indices; ! public Demo() { ! Console.WriteLine( "Constructor" ); glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH ); glutInitWindowSize( res, res ); --- 9,25 ---- public class Demo : Cg { ! protected IntPtr context, vertexProgram, fragmentProgram; ! protected CGprofile vertexProfile, fragmentProfile; ! protected int curTime = 0; ! protected bool haveLoadedPrograms = false; ! protected int res=512; ! protected float[] P, N, uv; ! protected uint[] indices; ! public Demo() { ! Debug.Indent(); ! Debug.WriteLine( "Entering Demo()" ); ! ! Debug.WriteLine( "Initializing GLUT" ); glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH ); glutInitWindowSize( res, res ); *************** *** 26,36 **** glutKeyboardFunc( new cb0_glutKeyboardFunc(keyboard) ); cgSetErrorCallback( new CgErrorEvent( errorHandler ) ); context = cgCreateContext(); ! glutMainLoop(); } protected void errorHandler() { CGerror err = cgGetError(); Console.Write( "Cg error: " ); --- 29,47 ---- glutKeyboardFunc( new cb0_glutKeyboardFunc(keyboard) ); + Debug.WriteLine( "Initializing Cg" ); cgSetErrorCallback( new CgErrorEvent( errorHandler ) ); context = cgCreateContext(); ! Debug.WriteLine( "Start main loop" ); ! glutMainLoop(); ! ! Debug.WriteLine( "Exiting Demo()" ); ! Debug.Unindent(); } protected void errorHandler() { + Debug.Indent(); + Debug.WriteLine( "Entering Demo.errorHandler()" ); + CGerror err = cgGetError(); Console.Write( "Cg error: " ); *************** *** 38,46 **** Console.WriteLine( cgGetErrorString( err ) ); System.Environment.Exit( 3 ); } protected void draw() { ! Console.WriteLine( "draw" ); if (!haveLoadedPrograms) { ChooseProfiles(); LoadCgPrograms(); --- 49,63 ---- Console.WriteLine( cgGetErrorString( err ) ); System.Environment.Exit( 3 ); + + Debug.WriteLine( "Exiting Demo.errorHandler()" ); + Debug.Unindent(); } protected void draw() { ! Debug.Indent(); ! Debug.WriteLine( "Entering Demo.draw()" ); ! if (!haveLoadedPrograms) { + Debug.WriteLine( "Initiize GL/Cg" ); ChooseProfiles(); LoadCgPrograms(); *************** *** 51,96 **** } glClearColor( 0.25f, 0.25f, 0.25f, 1.0f ); glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); gluPerspective( 30.0, 1.0, 0.1, 100.0 ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); gluLookAt( 4.0, 4.0, -4.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 ); glRotatef( curTime, 0, 1, 0 ); - //cgGLBindProgram( vertexProgram ); - //cgGLBindProgram( fragmentProgram ); ! //cgGLSetStateMatrixParameter(cgGetNamedParameter(vertexProgram, "ModelViewProj"), CG_GL_MODELVIEW_PROJECTION_MATRIX, CG_GL_MATRIX_IDENTITY); ! //cgGLSetStateMatrixParameter(cgGetNamedParameter(vertexProgram, "ModelView"), CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_IDENTITY); ! //cgGLSetStateMatrixParameter(cgGetNamedParameter(vertexProgram, "ModelViewIT"), CG_GL_MODELVIEW_MATRIX, CG_GL_MATRIX_INVERSE_TRANSPOSE); float[] Kd = { 0.7f, 0.2f, 0.2f }; float[] Ks = { 0.9f, 0.9f, 0.9f }; ! //cgGLSetParameter3fv(cgGetNamedParameter(vertexProgram, "diffuse"), Kd); ! //cgGLSetParameter3fv(cgGetNamedParameter(vertexProgram, "specular"), Ks); float[] lightPos = { 3, 2, -3 }; ! //cgGLSetParameter3fv(cgGetNamedParameter(fragmentProgram, "Plight"), lightPos); float[] lightColor = { 1, 1, 1 }; ! //cgGLSetParameter3fv(cgGetNamedParameter(fragmentProgram, "lightColor"), lightColor); ! //cgGLSetParameter1f(cgGetNamedParameter(fragmentProgram, "shininess"), 40); ! //cgGLEnableTextureParameter(cgGetNamedParameter(fragmentProgram, "diffuseMap")); ! // And go ahead and draw the scene geometry DrawGeometry(); ! //cgGLDisableTextureParameter(cgGetNamedParameter(fragmentProgram, "diffuseMap")); ! glutSwapBuffers(); ++curTime; glutPostRedisplay(); } protected void DrawGeometry() { ! Console.WriteLine( "DrawGeometry" ); int nu = 30; int nv = 30; --- 68,129 ---- } + Debug.WriteLine( "Reset GL" ); glClearColor( 0.25f, 0.25f, 0.25f, 1.0f ); glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); + Debug.WriteLine( "Set projection matrix" ); glMatrixMode( GL_PROJECTION ); glLoadIdentity(); gluPerspective( 30.0, 1.0, 0.1, 100.0 ); + Debug.WriteLine( "Set modelview matrix" ); glMatrixMode( GL_MODELVIEW ); glLoadIdentity(); gluLookAt( 4.0, 4.0, -4.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 ); glRotatef( curTime, 0, 1, 0 ); ! Debug.WriteLine( "Bing Cg programs" ); ! cgGLBindProgram( vertexProgram ); ! cgGLBindProgram( fragmentProgram ); ! ! Debug.WriteLine( "Bind uniform parameters to vertex shader" ); ! cgGLSetStateMatrixParameter(cgGetNamedParameter(vertexProgram, "ModelViewProj"), CGGLenum.CG_GL_MODELVIEW_PROJECTION_MATRIX, CGGLenum.CG_GL_MATRIX_IDENTITY); ! cgGLSetStateMatrixParameter(cgGetNamedParameter(vertexProgram, "ModelView"), CGGLenum.CG_GL_MODELVIEW_MATRIX, CGGLenum.CG_GL_MATRIX_IDENTITY); ! cgGLSetStateMatrixParameter(cgGetNamedParameter(vertexProgram, "ModelViewIT"), CGGLenum.CG_GL_MODELVIEW_MATRIX, CGGLenum.CG_GL_MATRIX_INVERSE_TRANSPOSE); + Debug.WriteLine( "Bind varying parameters to vertex shader" ); float[] Kd = { 0.7f, 0.2f, 0.2f }; float[] Ks = { 0.9f, 0.9f, 0.9f }; ! cgGLSetParameter3fv(cgGetNamedParameter(vertexProgram, "diffuse"), Kd); ! cgGLSetParameter3fv(cgGetNamedParameter(vertexProgram, "specular"), Ks); + Debug.WriteLine( "Bind uniform parameters to fragment shader" ); float[] lightPos = { 3, 2, -3 }; ! cgGLSetParameter3fv(cgGetNamedParameter(fragmentProgram, "Plight"), lightPos); float[] lightColor = { 1, 1, 1 }; ! cgGLSetParameter3fv(cgGetNamedParameter(fragmentProgram, "lightColor"), lightColor); ! cgGLSetParameter1f(cgGetNamedParameter(fragmentProgram, "shininess"), 40); ! Debug.WriteLine( "Enable approprate texture for fragment shader" ); ! cgGLEnableTextureParameter(cgGetNamedParameter(fragmentProgram, "diffuseMap")); ! ! Debug.WriteLine( "Draw scene" ); DrawGeometry(); ! ! Debug.WriteLine( "Disable texture" ); ! cgGLDisableTextureParameter(cgGetNamedParameter(fragmentProgram, "diffuseMap")); ! glutSwapBuffers(); ++curTime; glutPostRedisplay(); + Debug.WriteLine( "Exiting Demo.draw()" ); + Debug.Unindent(); } protected void DrawGeometry() { ! Debug.Indent(); ! Debug.WriteLine( "Demo.DrawGeometry()" ); ! int nu = 30; int nv = 30; *************** *** 100,103 **** --- 133,137 ---- int np = 0; int uvp = 0; + IntPtr param; if (P==null) { *************** *** 107,110 **** --- 141,145 ---- uv = new float[2*nVerts]; + Debug.WriteLine( "Fill position, normal and texture coordinate arrays" ); for ( v=0; v<nv; ++v ) { float fv = (float)(v/(nv-1)); *************** *** 120,123 **** --- 155,159 ---- } + Debug.WriteLine( "Fill in the vertex index arrays" ); indices = new uint[3*nTris]; int ip = 0; *************** *** 132,171 **** } } ! Console.WriteLine( "1" ); ! IntPtr param = cgGetNamedParameter( vertexProgram, "Pobject" ); cgGLSetParameterPointer( param, 3, GL_FLOAT, 0, P ); - - Console.WriteLine( "2" ); param = cgGetNamedParameter( vertexProgram, "Nobject" ); cgGLSetParameterPointer( param, 3, GL_FLOAT, 0, N ); - - Console.WriteLine( "3" ); param = cgGetNamedParameter( vertexProgram, "TexUV" ); cgGLSetParameterPointer( param, 2, GL_FLOAT, 0, uv ); - - Console.WriteLine( "4" ); param = cgGetNamedParameter( fragmentProgram, "diffuseMap" ); cgGLEnableTextureParameter( param ); - - Console.WriteLine( "5" ); - glDrawElements( GL_TRIANGLES, 3*nTris, GL_UNSIGNED_INT, indices ); - - Console.WriteLine( "6" ); - param = cgGetNamedParameter( vertexProgram, "Pobject" ); - cgGLDisableClientState( param ); - - Console.WriteLine( "7" ); - param = cgGetNamedParameter( vertexProgram, "Nobject" ); - cgGLDisableClientState( param ); - - Console.WriteLine( "8" ); - param = cgGetNamedParameter( vertexProgram, "TexUV" ); - cgGLDisableClientState( param ); - - Console.WriteLine( "9" ); - param = cgGetNamedParameter(fragmentProgram, "diffuseMap"); - cgGLDisableTextureParameter(param); } } --- 168,206 ---- } } + ! Debug.WriteLine( "Associate data 'pointers' with vertex shader" ); ! param = cgGetNamedParameter( vertexProgram, "Pobject" ); cgGLSetParameterPointer( param, 3, GL_FLOAT, 0, P ); param = cgGetNamedParameter( vertexProgram, "Nobject" ); cgGLSetParameterPointer( param, 3, GL_FLOAT, 0, N ); param = cgGetNamedParameter( vertexProgram, "TexUV" ); cgGLSetParameterPointer( param, 2, GL_FLOAT, 0, uv ); param = cgGetNamedParameter( fragmentProgram, "diffuseMap" ); cgGLEnableTextureParameter( param ); } + + Debug.WriteLine( "Enable bindings to parameters" ); + param = cgGetNamedParameter( vertexProgram, "Pobject" ); + cgGLEnableClientState( param ); + param = cgGetNamedParameter( vertexProgram, "Nobject" ); + cgGLEnableClientState( param ); + param = cgGetNamedParameter( vertexProgram, "TexUV" ); + cgGLEnableClientState( param ); + param = cgGetNamedParameter( fragmentProgram, "diffuseMap" ); + cgGLEnableClientState( param); + + Debug.WriteLine( "Draw geometry" ); + glDrawElements( GL_TRIANGLES, 3*nTris, GL_UNSIGNED_INT, indices ); + + Debug.WriteLine( "Disable bindings to parameters" ); + param = cgGetNamedParameter( vertexProgram, "Pobject" ); + cgGLDisableClientState( param ); + param = cgGetNamedParameter( vertexProgram, "Nobject" ); + cgGLDisableClientState( param ); + param = cgGetNamedParameter( vertexProgram, "TexUV" ); + cgGLDisableClientState( param ); + param = cgGetNamedParameter(fragmentProgram, "diffuseMap"); + cgGLDisableTextureParameter(param); } *************** *** 262,266 **** } ! public static void Main( string[] argss) { Demo demo = new Demo(); } --- 297,303 ---- } ! public static void Main( string[] args) { ! Debug.Listeners.Add( new TextWriterTraceListener( Console.Out ) ); ! Debug.AutoFlush = true; Demo demo = new Demo(); } |