tb.h
上传用户:xk288cn
上传日期:2007-05-28
资源大小:4876k
文件大小:2k
- /*
- * Simple trackball-like motion adapted (ripped off) from projtex.c
- * (written by David Yu and David Blythe). See the SIGGRAPH '96
- * Advanced OpenGL course notes.
- *
- *
- * Usage:
- *
- * o call tbInit() in before any other tb call
- * o call tbReshape() from the reshape callback
- * o call tbMatrix() to get the trackball matrix rotation
- * o call tbStartMotion() to begin trackball movememt
- * o call tbStopMotion() to stop trackball movememt
- * o call tbMotion() from the motion callback
- * o call tbAnimate(GL_TRUE) if you want the trackball to continue
- * spinning after the mouse button has been released
- * o call tbAnimate(GL_FALSE) if you want the trackball to stop
- * spinning after the mouse button has been released
- *
- * Typical setup:
- *
- *
- void
- init(void)
- {
- tbInit(GLUT_MIDDLE_BUTTON);
- tbAnimate(GL_TRUE);
- . . .
- }
- void
- reshape(int width, int height)
- {
- tbReshape(width, height);
- . . .
- }
- void
- display(void)
- {
- glPushMatrix();
- tbMatrix();
- . . . draw the scene . . .
- glPopMatrix();
- }
- void
- mouse(int button, int state, int x, int y)
- {
- tbMouse(button, state, x, y);
- . . .
- }
- void
- motion(int x, int y)
- {
- tbMotion(x, y);
- . . .
- }
- int
- main(int argc, char** argv)
- {
- . . .
- init();
- glutReshapeFunc(reshape);
- glutDisplayFunc(display);
- glutMouseFunc(mouse);
- glutMotionFunc(motion);
- . . .
- }
- *
- * */
- /* functions */
- extern void tbInit(GLuint button);
- extern void tbMatrix(void);
- extern void tbReshape(int width, int height);
- extern void tbMouse(int button, int state, int x, int y);
- extern void tbMotion(int x, int y);
- extern void tbAnimate(GLboolean animate);
- extern void tbAnimateFunc(void (*func)(int animate));
- extern void tbStepAnimation(void);