Xcode4 и OpenGL - программа получила сигнал: EXC_BAD_ACCESS - PullRequest
1 голос
/ 30 марта 2011

Я делаю свои первые шаги с OpenGL и Xcode4. Поэтому я создал новый проект ( Приложение -> Инструмент командной строки -> C ++ ).

В проекте я захожу в Цели -> Фазы сборки -> Связать двоичные файлы с библиотеками и добавляю две инфраструктуры: OpenGL.framework и GLUT.framework

Это мой main.cpp:

#include <iostream>
#include <stdlib.h>
#include <GLUT/glut.h>

void RenderScene()
{
    glLoadIdentity (); 
    glBegin( GL_POLYGON );  
    glColor4f( 1.0, 0.0, 0.0, 1.0);
    glVertex3f( -0.5, -0.5, -0.5 );
    glVertex3f(  0.5, -0.5, -0.5 );
    glVertex3f(  0.5,  0.5, -0.5 );
    glVertex3f( -0.5,  0.5, -0.5 );
    glEnd();
    glFlush();  
}

int main(int argc, char **argv)
{
    glutInit( &argc, argv );                
    glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );        
    glutInitWindowSize( 600, 600 );        
    glutCreateWindow( "Name_1; Name_2" );   
    glutDisplayFunc( RenderScene );         
    return 0;
}

Когда я запускаю проект, сборка завершается успешно.

Но в строке glutCreateWindow( "Name_1; Name_2" ); Xcode сообщает мне: «Поток 1: Программа получила сигнал:« EXC_BAD_ACCESS », и он не показывает никакого окна.

Пожалуйста, помогите мне :) спасибо!

[[EDIT]]

Вот трассировка стека:

    This GDB was configured as "x86_64-apple-darwin".tty /dev/ttys001
    [Switching to process 7126 thread 0x0]
    2011-03-30 16:14:45.052 OpenGL[7126:903] NSSoftLinking - The function 'CGLSetOption' can't be found in the OpenGL framework.
    sharedlibrary apply-load-rules all
    Current language:  auto; currently c++
    (gdb) where
#0  0x0000000000000000 in ?? ()
#1  0x00007fff815efb43 in createPixelFormat ()
#2  0x00007fff815efae9 in -[NSOpenGLPixelFormat initWithAttributes:] ()
#3  0x000000010001bad3 in createPixelFormat ()
#4  0x000000010001b251 in __glutDeterminePixelFormat ()
#5  0x000000010001b3f7 in __glutCreateWindow ()
#6  0x000000010001b7bd in glutCreateWindow ()
#7  0x0000000100000d2b in main (argc=1, argv=0x7fff5fbff6e8) at /Users/.../main.cpp:23
Current language:  auto; currently c++
(gdb) 

1 Ответ

3 голосов
/ 30 марта 2011

У меня есть этот код, работающий на моем Macbook Pro (дома) и на моем компьютере Fedora 14 (работа) с использованием кода, который вы опубликовали (с некоторыми незначительными изменениями - см. Ниже).Ваша проблема может показаться вам локальной, а не проблема с Glut или вашим кодом.

Вот как это выглядит:

enter image description here

Слегка измененокод (чтобы очистить окно и войти в основной цикл):

#include <iostream>
#include <stdlib.h>
#include <GLUT/glut.h>

void RenderScene()
{
    glLoadIdentity (); 
    glClear(GL_COLOR_BUFFER_BIT);
    glBegin( GL_POLYGON );  
    glColor4f( 1.0, 0.0, 0.0, 1.0);
    glVertex3f( -0.5, -0.5, -0.5 );
    glVertex3f(  0.5, -0.5, -0.5 );
    glVertex3f(  0.5,  0.5, -0.5 );
    glVertex3f( -0.5,  0.5, -0.5 );
    glEnd();
    glFlush();  
}

int main(int argc, char **argv)
{
    glutInit( &argc, argv );                
    glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );        
    glutInitWindowSize( 600, 600 );        
    glutCreateWindow( "Name_1; Name_2" );   
    glutDisplayFunc( RenderScene );
    glutMainLoop();
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...