|
|
我是OpenGL菜鸟,有问题求助各位高手:问题是编一个会旋转的三维圆环,不知道为什么怎么都弄不出来。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <gl/glut.h>
#include <windows.h>
void DrawTorus()
{
GLfloat outerRadius = 0.35f;
GLfloat innerRadius = 0.15f;
GLint slices = 40;
GLint stacks = 20;
glutWireTorus(outerRadius, innerRadius,slices,stacks );
}
void RenderScene(void)
{
glPushMatrix();
glRotatef (90.0f,0.0,0.0,1.0);
DrawTorus();
glPopMatrix();
glutSwapBuffers();
}
void SetupRC()
{
glClearColor(0.0f, 0.0f, .50f, 1.0f );
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
}
void TimerFunction(int value)
{
glutPostRedisplay();
glutTimerFunc(33,TimerFunction, 1);
}
void ChangeSize(int w, int h)
{
GLfloat fAspect;
if(h == 0)
h = 1;
glViewport(0, 0, w, h);
fAspect = (GLfloat)w / (GLfloat)h;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(35.0f, fAspect, 1.0f, 50.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(800,600);
glutCreateWindow("Manual Transformations Demo");
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
SetupRC();
glutTimerFunc(33, TimerFunction, 1);
glutMainLoop();
return 0;
}
谢谢各位高手~万分感激
[em7] |
|