extract the more basic opengl templates into a separate header