【发布时间】:2011-11-13 01:37:17
【问题描述】:
我正在尝试使用来自 http://www.swiftless.com/tutorials/opengl/camera2.html 的摄像头代码实现摄像头控制的场景
还有一本书中的景观代码,它随机生成地形。通过使用如下所示的代码,鼠标控制和景观工作,但景观始终随机生成。我怀疑这与 IdleFunc 有关,但如果我从 main() 中取出该行,鼠标将停止工作。
如何将相机和土地分开独立工作?
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
camera();
landscape.draw();
glutSwapBuffers();
}
在主目录中:
// callback methods
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(display);
glutPassiveMotionFunc(mouseMovement);
土地.cpp:
void land::draw(void)
{
int i;
size = 1;
for (i=1;i<=numlevels;i++) size = size * 2;
for (i=0;i<=size;i++) cd[i] = (GLfloat)i/(GLfloat)size;
twotopowerh = exp(log(2.0)*hvalue);
cvalue = 1.0*sqrt(1.0 - twotopowerh*twotopowerh/4.0);
if (!sea) {
calcheights();
makesmooth();
}
drawmesh();
drawsides();
if (sea) {
drawsea();
sea = 0;
}
}
【问题讨论】:
-
landscape.draw();是做什么的?请告诉我们。 -
查看代码后编辑,基本上只是绘制所有内容。