【发布时间】:2014-04-23 17:11:16
【问题描述】:
我有这个画圆的功能:
void draw_circle()
{
GLint num_of_tri = 32;
GLfloat vertex[3];
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
const GLfloat delta_angle = 2.0*PI/float(num_of_tri);
//Draw Front tire
glBegin(GL_TRIANGLE_FAN);
glColor3f(0.5, 0.5, 0.5);
vertex[0] = vertex[1] = vertex[2] = 0.0;
glVertex3fv(vertex);
for(int i = 0; i < num_of_tri ; i++)
{
vertex[0] = cos(delta_angle*i) * wheelRadius; //wheelRadius is 1.0
vertex[1] = sin(delta_angle*i) * wheelRadius;
vertex[2] = 0.0;
glVertex3fv(vertex);
}
vertex[0] = 1.0 * wheelRadius;
vertex[1] = 0.0 * wheelRadius;
vertex[2] = 0.0;
glVertex3fv(vertex);
glEnd();
}
这是我的初始化函数
void init(void)
{
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0.0, 0.0, 1.5, 0, 0, 0, 0, 1, 0);
}
这是我的显示功能
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
draw_circle();
glFlush();
}
据我所知,圆圈是在原点绘制的。那么用眼睛值(0,0,1.5)调用gluLookAt函数不是问题吧?
但每当我用眼睛值 z 大于 1 调用 gluLookAt 时,圆圈就会消失。为什么会这样?
任何帮助将不胜感激。
【问题讨论】:
-
你需要为一件事设置一个投影矩阵。使用默认投影,您的滚轮将不适合您的查看体积(zNear = -1,zFar = 1)。
-
谢谢。 gluPerspective 完全改变 3d 对象是否正常?我画了一个 3d 车轮,和上面的 gluPerspective 完全搞砸了。