gpt4 book ai didi

opengl - 物体不会旋转?

转载 作者:行者123 更新时间:2023-12-02 05:39:49 26 4
gpt4 key购买 nike

void RenderBrain(void)
{

glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);

ifstream myFile("brainData.txt");

if (!myFile.is_open())
{
cout << "Unable to open file";
exit(1); // terminate with error
}


glRotatef(80.0f, 1.0f, 0.0f, 0.0f);

while (! myFile.eof())
{
myFile>>a[0];
myFile>>a[1];
myFile>>a[2];
myFile>>a[3];


glColor3f(0.60f,0.80f,0.90f);

glLoadIdentity();
glTranslatef((a[0]-1.15)*26, a[2]*30, a[1]*30);
glutSolidSphere(6, 5, 5);


}

myFile.close();
glFlush();
glutSwapBuffers();
}

以上是我的代码的一部分,在添加 glLoadIdentity(); 后我无法让它旋转;循环内。如果我移除它,我的所有球体都会飞向各个方向。

有人可以帮忙吗?

最佳答案

强烈推荐通过 NeHe OpenGL Tutorials 工作如果 OpenGL 对您来说是新手。
glLoadIdentity正在否定 glRotate 的效果.相反,请使用 glPushMatrix / glPopMatrix 实现独立翻译:

glPushMatrix();               
glTranslatef((a[0]-1.15)*26, a[2]*30, a[1]*30);
glutSolidSphere(6, 5, 5);
glPopMatrix();

如果球体不再可见,那么您需要提供视口(viewport)和投影矩阵设置代码,以便我们确定问题所在。另一方面,如果您根本没有设置视口(viewport)和投影,请参阅上面的教程并修复它!

此外,每次渲染场景时,您都会将模型 View 矩阵旋转 80 度。这是预期的结果吗?这个函数的调用频率是多少?我会考虑在变量中保持所需的旋转,然后加载单位矩阵并在每次通过时旋转该角度。例如:
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
angle += angularVelocity * deltaTime;
glRotate(angle, 1, 0, 0);

您是否只调用此函数一次并期望 glRotate 调用不断更新场景(一个非常错误的假设),或者重复调用此函数以渲染动画场景,这也是模棱两可的。如果是前一种情况,请阅读我上面链接的教程。如果是后一种情况,那么您应该考虑执行一次文件 I/O 并构建一个 display list在渲染循环中调用。

关于opengl - 物体不会旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/662411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com