我写了一个简单的 OpenGL 代码,它在 Visual Studio 中正常工作。但是当它被转移到 Xcode 时。这是编译成功,但结果不同。什么都没有。
我只更改了 OpenGL、GLUT 头文件。
我怀疑gluPerspective
Xcode 中的范围不同,但我不知道确切的原因。
它是如何运作的?
这是我在 xcode 中的代码
#include <GLUT/GLUT.h>
#include <OpenGL/OpenGL.h>
#include <OpenGL/glu.h>
#include <math.h>
#include <stdio.h>
double RotAngle = 0.0;
void OctPyramid(void)
{
int N = 8;
double angle = 2 * 3.1415 / N;
int i;
glBegin(GL_LINE_LOOP);
for (i = 0; i < N; i++)
glVertex3f(cos(i * angle), -1.0, sin(i * angle));
glEnd();
glBegin(GL_LINES);
for (i = 0; i < N; i++)
{
glVertex3f(0.0, 1.0, 0.0);
glVertex3f(cos(i * angle), -1.0, sin(i * angle));
}
glEnd();
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0, 1.0, 1.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0, 0.0, -6.0);
glRotatef(RotAngle, 0, 1, 0);
glTranslatef(2.0, 0.0, 0.0);
OctPyramid();
glFlush();
}
void IncAngle(void)
{
RotAngle = RotAngle + 0.08;
if (RotAngle > 360.0)
RotAngle = RotAngle - 360.0;
glutPostRedisplay();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitWindowPosition(0, 0);
glutInitWindowSize(400, 400);
glutInitDisplayMode(GLUT_RGBA);
glutCreateWindow("main");
glClearColor(0.0, 0.0, 0.0, 1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, 1.0, 0.0, 10.0);
glutDisplayFunc(display);
glutIdleFunc(IncAngle);
glutMainLoop();
}