glewInit () не работает в macOS

Итак, у меня есть кусок кода, который отлично работает на компьютере с Ubuntu, но не может сделать это на XCode или через терминал. Я пытаюсь запустить его на xcode, но в основном он не работает с:

& quot; Использование необъявленного идентификатора glewInit; Вы имели в виду glutInit? & quot; & quot; Слишком мало аргументов для вызова функции, ожидаемое 2, имеют 0 & quot;

Код длинный, написан моим профессором и работает на Ubuntus. Но с ошибками, я думаю, что причины ... ну, недооцененный идентификатор, include отсутствует. Итак, после поиска в Google я понял, что glewInit является частью библиотеки glew - & gt; поэтому я скачал код и установил его на свой компьютер с помощью следующего:

делать судо сделать установку

которые были успешно установлены в мой / 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;
}

У меня Lion 10.7.4 и xCode 4.2.1

 deebee26 июн. 2012 г., 19:45
Можете ли вы показать, что в Angel.h.

Ответы на вопрос(1)

Решение Вопроса

конечно, include) не является обязательным в MacOS, поэтому вы можете просто исключить его следующим образом:

#ifndef __APPLE__
glewInit();
#endif

То же самое с включает.

Теперь с неразрешенными символами. Вы должны включить нативные заголовки GL MacOSX:

#ifdef __APPLE__
#  include <OpenGL/gl.h>
#  include <OpenGL/glext.h>
#else /// your stuff for linux
#  include "GL/GL.h"
.... whatever
#endif

OpenGL - это базовая технология для OSX, а не «расширение», как в Linux / X Window. Так что просто включите OpenGL и GLUT фреймворк в ваш проект XCode и, надеюсь, он должен работать и работать.

 26 июн. 2012 г., 21:53
Или даже принять ответ ...;)
 26 июн. 2012 г., 20:33
Да, иногда кажется странным, что разработка на MacOS несколько проще :) Не стесняйтесь, чтобы ответить на этот вопрос, кстати :)
 08 авг. 2014 г., 20:10
Небольшое исправление к этому ответу: имя файла заголовка в Mac OS<OpenGL/gl.h>, Обратите внимание на нижний регистрgl.hпо сравнению с верхним регистромGL.h в ответ. Кроме того, чтобы получить доступ к функциям GL3 +, необходимо включить заголовок<OpenGL/gl3.h> вместо.
 user103906326 июн. 2012 г., 20:28
Круто, спасибо :) Кажется, это исправить)
 user103906327 июн. 2012 г., 03:03
Я не могу его поднять - у меня недостаточно очков репутации :(

Ваш ответ на вопрос