   OpenGL for high school
  At the high school where we work, I have been approached about offering a class in  Computer Graphics for the students.  Initially, I felt this topic would be too advanced, but my students are pretty smart.  I think I'll be cutting out a lot of the theory and mathematics involved and focus more on OpenGL programming.Each student that takes this will need to have completed (with an 85% or better) our Introduction to Computer Science class, which is the equivalent of a Programming I and II university classes.I don't believe OpenGL will be much trouble for them.  Right now, we use Microsoft's Visual C++ 2005 Express as our IDE and compiler.  Naturally, we use C++ and will do so in the Graphics class.Any suggestions or ideas on this class?  Anything from projects, structure, general implementation is welcome.I had a thought of using Nehe's tutorials from nehe.gamedev.net, but it's been said that that may be too advanced initally.Text wise, I'm planning on using the red book, but I welcome any further suggestions.   
  I think the redbook should be used like a text book and you should adapt the NeHe tutorials into lesson plans... I am at high school age and learnt opengl from NeHe's tutorials.   ;  I don't think you should use NeHe's actual code as basis, although the progression of the tutorials is probably acceptable for a lesson plan.   ;Quote:Original post by taesen00I think I'll be cutting out a lot of the theory and mathematics involved and focus more on OpenGL programming.I really think that a good understanding of the Theory (and math, but theory moreso) is important for effective use of OpenGL.Far too often beginners get into trouble when the know how to copy and paste opengl api calls from tutorials, but really have no idea what's going on behind the scenes. ("why won't my rotations work in the right order?",etc)If I remember correctly, late HS is about when students start learning about matrices and linear algebra; both of which tie directly into the math and theory behind opengl. It's a perfect opportunity to illustrate to them the practical usage of the stuff from math class...   ;  I would start off by showing advanced concepts.  Describing arictecture first, going through open sourced engines(Quake 1).  I would skip some of theory, but still apply basic concepts.  Example rendering triangles, creating a cube, etc. Then I would jump from there to loading BSP trees.  For a high school class, I don't think its important to manually draw worlds, or shapes in general.One thing thats important is to see the relationship between Level editors and a opengl renderer.  Stick with simple lighting such as pre-generated lightmaps, and bring UP OpenGL shaders, say what there used for, and make students learn that on there own if they wish.  Offer it like extra credit.  Students should know how lists work, and same with extensions.Once your past the basics, you should know introduce a pre-done framework that does logging, file handling, etc, sense that stuff is not exactlly what that class is all about. Translating worlds is important, for camera movements.  It seems like this would be a AP level class, so I don't think its unreasonable for students to adding a gaming layer on there own to pass commands to a rendering class.  Thats just some ideas, I would require the students to demonstrate they know C++ kind of fluentlly and know OOP.  They should know strong concepts of pointers as well, and how memory is used.If its a year class I would keep more of theory, but if its a semester class, your going to need to drop alot of the nit picky stuff.  it is very important to know what is going on behind the scenes, but it should be more of a college class that fills in those gaps, while you just go over some of those gaps if that makes sense.   ;Quote:Original post by eviltwigflipperI would start off by showing advanced concepts.  Describing arictecture first, going through open sourced engines(Quake 1).  I would skip some of theory, but still apply basic concepts.  Example rendering triangles, creating a cube, etc. Then I would jump from there to loading BSP trees.  For a high school class, I don't think its important to manually draw worlds, or shapes in general.One thing thats important is to see the relationship between Level editors and a opengl renderer.  Stick with simple lighting such as pre-generated lightmaps, and bring UP OpenGL shaders, say what there used for, and make students learn that on there own if they wish.  Offer it like extra credit.  Students should know how lists work, and same with extensions.Once your past the basics, you should know introduce a pre-done framework that does logging, file handling, etc, sense that stuff is not exactlly what that class is all about. Translating worlds is important, for camera movements.  It seems like this would be a AP level class, so I don't think its unreasonable for students to adding a gaming layer on there own to pass commands to a rendering class.  Thats just some ideas, I would require the students to demonstrate they know C++ kind of fluentlly and know OOP.  They should know strong concepts of pointers as well, and how memory is used.If its a year class I would keep more of theory, but if its a semester class, your going to need to drop alot of the nit picky stuff.  it is very important to know what is going on behind the scenes, but it should be more of a college class that fills in those gaps, while you just go over some of those gaps if that makes sense.Yeah... if you want to teach them to be a bunch of ModdersI suggest a more 'academic' approach. There is more to OpenGL than first person shooters. Why not delve into the field of Scientific Visualization?a simple first lesson might be: given this Real topographic elevation data, let's create a 3d model of this section of land; and color code it based on elevation.Now lets color it based on the slope of the land. Combine that data to decide what locations the following type of tree can grow, now render the trees(simple billboards).Doesn't that sound much more educational than "lets learn how to load a quake map"?;  ...and as a Special Surprise, at the end once the 'serious' landscape task is finished, introduce them to moving the camera via mouselook, add simple collision detection, and let them 'walk' across it - the beggingings of a simple first person shooter.   ;  Start showing them some features that will motivate them to use OpenGL (no in depth explanation, just showing what is possible). Then start with the basics: setting up an application, render a triangle, render some more complex object, moving objects around (simple matrix ops) etc.It doesn't make sense to jump right into advanced concepts like level loading or BSP-Trees if they won't even have an idea of what they mean and what is behind them. Your students should be familiar with matrix and vector math to some degree but you could show them how to do transformations and why the order of transformation is important (like scaling x rotation x translation).Then if they got the basics start a course project by developing some simple engine (for whatever purpose you want). Have the students discuss features and possible implementations. Teach them application architecture and have them make a decision on which architecture to use.Overall, you should always try not to have too long boring periods in which only theory or basic coding (code that doesn't have any conceivable use for the students) prevails. Try to keep them motivated by having them experience their own little successes until they master the basics. Then they should be able to start the engine project.At the end of the class you finally could propose writing some term papers on advanced concepts like BSP-Trees, SceneGraphs etc. and have the students implement them into their engine. Up to then they should have the knowledge they need to dig further into 3D design.;  if u do go with nehemake sure u go with the glut version + not the win32 versiondownload both versions to see whycertainly better than what i got at school http://en.wikipedia.org/wiki/Logo_programming_language   ;  agree with Lord_Evil.   