所以我有一段代码可以在ubuntu机器上正常运行,但是无法在xcode或终端上运行。我试图在xcode上运行它,但它主要失败:glewInit()在macOS上失败
“使用未声明的标识符glewInit;您的意思是glutInit?” “功能调用的参数太少,预期2,有0”
代码冗长是由我的教授编写的,它运行在ubuntus上。但是有了这些错误,我认为原因是......好的,被宣称的标识符包含缺失。所以,谷歌搜索后,我想通了,glewInit是GLEW库的一部分 - >所以我下载的代码,并与下面安装了它在我的机器上:
使 须藤-s 使安装
这是成功的安装到我的/ usr/include/GL中。现在,当我输入xcode #include或只是#include时,编译器会抛出glew.h未找到(尽管我可以在usr/include/GL中看到自己的文件)。
下面是代码:
#include "include/Angel.h"
// The rotation around z axis
GLfloat Theta = 0.0; // Angle (in degrees)
GLfloat step = 0.01; // Incremental
GLuint locTheta;
enum { CW = 0, CCW = 1};
int direction = CW; // Direction
//Scale along x and y axes
GLfloat ScaleFactor[2] = {1.0, 1.0};
GLuint locScale;
const int NumPoints = 4;
void init();
void display(void);
void reshape(GLsizei w, GLsizei h);
void keyboard(unsigned char key, int x, int y);
void mouse(int button, int state, int x, int y);
void idle(void);
//----------------------------------------------------------------------------
// OpenGL initialization
void init()
{
// Vertices of a unit square centered at origin, sides aligned with axes
vec4 points[] = {
vec4(-0.5, -0.5, 0, 1.0), //v1
vec4( 0.5, -0.5, 0, 1.0), //v2
vec4(-0.5, 0.5, 0, 1.0), //v3
vec4( 0.5, 0.5, 0, 1.0) //v4
};
// RGBA colors
vec4 colors[] = {
vec4(1.0, 0.0, 0.0, 1.0), // red
vec4(0.0, 1.0, 0.0, 1.0), // green
vec4(0.0, 1.0, 0.0, 1.0), // green
vec4(0.0, 0.0, 1.0, 1.0), // blue
};
// Create and initialize a buffer object
GLuint buffer;
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(points) + sizeof(colors), NULL, GL_STATIC_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(points), points);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(points), sizeof(colors), colors);
// Load shaders and use the resulting shader program
GLuint program = InitShader("vshader_rot.glsl", "fshader_rot.glsl");
glUseProgram(program);
// set up vertex arrays
GLuint vPosition = glGetAttribLocation(program, "vPosition");
glEnableVertexAttribArray(vPosition);
glVertexAttribPointer(vPosition, 4, GL_FLOAT, GL_FALSE, 0,
BUFFER_OFFSET(0));
GLuint vColor = glGetAttribLocation(program, "vColor");
glEnableVertexAttribArray(vColor);
glVertexAttribPointer(vColor, 4, GL_FLOAT, GL_FALSE, 0,
BUFFER_OFFSET(sizeof(points)));
// The location of shader uniform variables
locTheta = glGetUniformLocation(program, "theta");
locScale = glGetUniformLocation(program, "scale");
glClearColor(1.0, 1.0, 1.0, 1.0);
}
//----------------------------------------------------------------------------
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glUniform1f(locTheta, Theta);
glUniform2fv(locScale, 1, ScaleFactor);
glDrawArrays(GL_TRIANGLE_STRIP, 0, NumPoints);
glutSwapBuffers();
}
//----------------------------------------------------------------------------
void reshape(GLsizei w, GLsizei h)
{
glViewport(0, 0, w, h);
// Scale the square to avoid stretching
if (w > h) ScaleFactor[0] = (float)h/w;
if (w < h) ScaleFactor[1] = (float)w/h;
}
//----------------------------------------------------------------------------
void keyboard(unsigned char key, int x, int y)
{
switch(key) {
case 033: // Escape Key
case 'q': case 'Q':
exit(EXIT_SUCCESS);
break;
}
}
//----------------------------------------------------------------------------
void mouse(int button, int state, int x, int y)
{
if (state == GLUT_DOWN) {
switch(button)
{
case GLUT_LEFT_BUTTON:
direction = CCW;
break;
case GLUT_RIGHT_BUTTON:
direction = CW;
break;
}
}
}
//----------------------------------------------------------------------------
void idle(void)
{
// Animate the rotation
if (direction == CW)
Theta += step;
else
Theta -= step;
if (Theta > 360.0) {
Theta -= 360.0;
}
glutPostRedisplay();
}
//----------------------------------------------------------------------------
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(512, 512);
glutCreateWindow("Rotating Color Square");
glewInit();
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMouseFunc(mouse);
glutIdleFunc(idle);
glutMainLoop();
return 0;
}
我有狮子10.7.4和xcode的4.2.1
你可以在Angel.h中显示什么。 – deebee