【IT168 技术文档】


在Wrapper里,我加了两个新功能,一个是Enable2D,一个是Enable3D,方便我们混合2D/3D。
- void Enable2D()
- {
- int width = SCREEN_WIDTH;
- int height = SCREEN_HEIGHT;
- glViewport (0, 0, width, height);
- glMatrixMode (GL_PROJECTION);
- glLoadIdentity ();
- glOrthof(0, (float)width, 0, (float)height, 0, 100);
- glMatrixMode (GL_MODELVIEW);
- glLoadIdentity();
- glEnable (GL_BLEND);
- glEnable (GL_TEXTURE_2D);
- glDisable (GL_CULL_FACE);
- glDisable (GL_DEPTH_TEST);
- glDisable (GL_LIGHTING);
- //glDisableClientState (GL_NORMAL_ARRAY);
- }
- void Enable3D()
- {
- int width = SCREEN_WIDTH;
- int height = SCREEN_HEIGHT;
- float aspect = (float)width/(float)height;
- glViewport (0, 0, width, height);
- glScissor (0, 0, width, height);
- //glMatrixMode (GL_MODELVIEW);
- //glLoadIdentity ();
- glMatrixMode (GL_PROJECTION);
- glLoadIdentity ();
- InitPerspective (60.f, aspect, 0.1f, 1000.f);
- glMatrixMode (GL_MODELVIEW);
- glLoadIdentity ();
- glEnable (GL_CULL_FACE);
- //glDisable (GL_BLEND);
- glEnable (GL_DEPTH_TEST);
- //glEnable (GL_LIGHTING);
- //glEnableClientState (GL_NORMAL_ARRAY);
- //glEnable(GL_NORMALIZE);
- }
因为我们没有用lighting, 我把Normal Array暂时弄走了。
这个例子,每隔8秒会换到另一个动作。人的模型是732面,枪是102面。