OpenGL C++ na Ubuntu

0

Zainstalowałem sobie Code::Blocks, aby móc pisać w OpenGL. Stworzyłem nowy projekt (OpenGL Project), pojawił się plik z przykładowym kodem, ale kiedy chciałem skompilować, wyskoczyły błędy:

/home/moja_nazwa/openGL/ss/main.c|8|fatal error: GL/glx.h: Nie ma takiego pliku ani katalogu|
||=== Build finished: 1 errors, 0 warnings ===|

Czytałem już duuuużo tutoriali, ale nie wiem, co mogę w sumie zrobić. Pomoże ktoś?

0

sudo apt-get install libgl-dev

Czytanie list pakietów... Gotowe
Budowanie drzewa zależności       
Odczyt informacji o stanie... Gotowe
Pakiet libgl-dev jest pakietem wirtualnym zapewnianym przez:
  libgl1-mesa-swx11-dev 7.9~git20100924-0ubuntu2
  libgl1-mesa-dev 7.9~git20100924-0ubuntu2
Należy jednoznacznie wybrać jeden z nich do instalacji.

E: Package 'libgl-dev' has no installation candidate

Czyli hm, jakby nic to nie dało :/

sudo apt-get install libgl1-mesa-swx11 7.9~git20100924-0ubuntu2

?

Sorry, to wyżej do usunięcia. Czy poprawnie będzie tak:

sudo apt-get install libgl1-mesa-swx11-dev

?

bądź:

sudo apt-get install libgl1-mesa-dev

?

Zainstalowałem:

sudo apt-get install libgl1-mesa-dev

tworzę nowy projekt OpenGL, kompiluję, pojawia się inf. że projekt nie zbudowany, buduję go więc, (chociaż był zbudowany) i nie pojawia się żadne okienko, nic, ale błędu tez niby nie ma.

0

W katalogu z projektem wydaję polecenie: gcc -o -L/usr/X11/lib main main.c -lGL -lX11 dostaję: gcc: main: Nie ma takiego pliku ani katalogu

0

A czemu masz "main main.c", a nie samo "main.c"?

0

Słuchajcie ... Więc tak - nie wiem, co zrobiłem, ale działa ;)

1.Zainstalowałem Code::Blocks z Centrum Oprogramowania Ubuntu
2.Zainstalowałem za pomocą polecenia: sudo apt-get install libgl1-mesa-dev

w Code::Blocks stworzyłem nowy projekt OpenGL, wcisnąłem F9 i przykładowy kod działa. Mam jednak plik (kod znaleziony w sieci):

#include <GL/glut.h>

#define window_width  640
#define window_height 480

// Main loop
void main_loop_function()
{
   // Z angle
   static float angle;
   // Clear color (screen) 
   // And depth (used internally to block obstructed objects)
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
   // Load identity matrix
   glLoadIdentity();
   // Multiply in translation matrix
   glTranslatef(0,0, -10);
   // Multiply in rotation matrix
   glRotatef(angle, 0, 0, 1);
   // Render colored quad
   glBegin(GL_QUADS);
   glColor3ub(255, 000, 000); glVertex2f(-1,  1);
   glColor3ub(000, 255, 000); glVertex2f( 1,  1);
   glColor3ub(000, 000, 255); glVertex2f( 1, -1);
   glColor3ub(255, 255, 000); glVertex2f(-1, -1);
   glEnd();
   // Swap buffers (color buffers, makes previous render visible)
    glutSwapBuffers();
   // Increase angle to rotate
   angle+=0.25;
}

// Initialze OpenGL perspective matrix
void GL_Setup(int width, int height)
{

    glViewport( 0, 0, width, height );
    glMatrixMode( GL_PROJECTION );
    glEnable( GL_DEPTH_TEST );
    gluPerspective( 45, (float)width/height, .1, 100 );
    glMatrixMode( GL_MODELVIEW );
}

// Initialize GLUT and start main loop
int main(int argc, char** argv) {
    glutInit(&argc, argv);

    glutInitWindowSize(window_width, window_height);

    glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);

    glutCreateWindow("GLUT Example!!!");

    glutIdleFunc(main_loop_function);

    GL_Setup(window_width, window_height);
   glutMainLoop();

}

Jednak po wydaniu polecenia w konsoli:

sth.cpp:1: fatal error: GL/glut.h: Nie ma takiego pliku ani katalogu
compilation terminated.

Powyższy kod kompilowałem za pomocą polecenia: g++ sth.cpp -lglut

0

GLUTa pewnie trzeba zainstalować osobno :]

0

Na ubuntu masz taki programik synaptic. Jest to ogólnie nakładka na apt-get, taki okienkowy aptitude. Jeżeli kompilator nie może znaleźć jakieś biblioteki, to wpisz w synapticu nazwę tej biblioteki i ściągnij coś, co najprawdopodobniej będzie wyglądało tak: libnazwa-dev. Zajmuje to mniej czasu niż pytanie po forach.

0

Nie jestem autorem tematu, ale chętnie się podepnę. Czym rózni się OpenGL od GLUTa? Bo nie mogę wyłapać róznicy. I to jest biblioteka, i to, czy jak?

0

Korzystanie z GLUT jest absolutnie niepotrzebne, aby uzyskać pełnię możliwości OpenGLa. GLUT oznacza OpenGL Utility Toolkit, zawiera trochę pomocniczych funkcji będących wrapperami na OpenGLowe funkcje plus bindingi do systemowych API wyświetlania okienek czy grafiki. Spokojnie możesz się obejść bez tych pomocniczych funkcji (np możesz napisać własne funkcje do generowania kwadryk), a bindingi zależą najmocniej od docelowych platform i używanego języka - OpenGL to nie tylko C/C++ Win/Lin/Mac, ale dziesiątki innych języków i platform. GLUT jest co najwyżej dobry do zabawy na początek, ale potem lepiej przerzucić się na coś nowocześniejszego. Używanie natywnego GLUTa z pod języków zarządzanych też ma niewielki sens (problemy z przenośnością i kompatybilnością), dlatego np Javowe LWJGL czy JogAmp implementują funkcjonalność GLUTopodobną w czystej Javie.

0

Korzystanie z GLUT jest absolutnie niepotrzebne, aby uzyskać pełnię możliwości OpenGLa.

GLUT to najprostszy sposób na uzyskanie PRZENOŚNEGO programu w OpenGL-u.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0