因此,我对openGL编程非常陌生,现在只是简单介绍一下基础知识。我知道我应该使用VBO之类的东西,但我想先得到一点基础。我不会给你所有的代码,仅仅是画和设置场景的东西。
这里有一个设置我的相机的代码:
glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(70, width / height, 1, 1000);
glEnable(GL_DEPTH_TEST);
// Move the camera back to view the scene
glTranslatef(0.0f, 0.0f, -5.0f);我试着像这样围绕着原点创建它(而且我从来没有画过底部的脸):
void drawtetrahedron(GLfloat angle)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(angle, 0.0f, 1.0f, 0.0f);
glBegin(GL_TRIANGLES);
glColor3f(1.0f, 0.0f, 0.0f); //FRONT
glVertex3f(0.0f, 1.0f, 0.0f);
glVertex3f(1.0f, -1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glColor3f(0.0f, 1.0f, 0.0f); //RIGHT
glVertex3f(0.0f, 1.0f, 0.0f);
glVertex3f(0.0f, -1.0f, -1.0f);
glVertex3f(1.0f, -1.0f, 1.0f);
glColor3f(0.0f, 0.0f, 1.0f); //LEFT
glVertex3f(0.0f, 1.0f, 0.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f(0.0f, -1.0f, -1.0f);
glEnd();
}当我的窗口第一次出现时,红色三角形看起来很好,但是当我旋转它时,它的形状看起来有点扭曲。如果我一直旋转(在那里我根本看不到红色的脸),它看起来很正常.我在这里错过了什么?
这是它开始看起来奇怪的地方

此外,对于我正在做的错误(或一般情况下)的openGL内容,我们也非常感谢!:D
发布于 2014-02-02 12:53:41
我不知道这是不是你认为的线状形状,但你的形状似乎不是一个普通的四面体:底部的3个角与上角的距离并不相同(两个前角到上角的距离是sqrt(6),而后角的距离是sqrt(5))。基座上的距离也是分开的:前角的距离是sqrt(2),而前角到后角的距离是sqrt(3)。
正四面体的一个例子是:
(请注意,这些坐标没有与xz平面平行的基座)
(1,1,1)(1,-1,-1)(-1,1,-1)(-1,-1)
您的代码本身看起来很好。(除了转换投影矩阵) I,我更喜欢在push/popmatrix和glbegin/end (这些东西{. })之后创建代码块,但这只是为了保持代码易于阅读。
另外,作为一个普遍的经验法则,在opengl中你不移动相机:你移动其他的一切。(这就是为什么翻译负z使对象远离您,转换正x使它们正确移动等等)。
https://stackoverflow.com/questions/21506444
复制相似问题