OpenGL C++ na Ubuntu

2011-10-04 10:40
opengl
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ś?

edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

2011-10-04 10:47
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.


Pozostało 580 znaków

2011-10-04 11:15
opengl
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

-o jest opcją, którą ustawiasz nazwę pliku wyjściowego. Czy na pewno ma być nią -L/usr/X11/lib? - Zjarek 2011-10-04 11:18

Pozostało 580 znaków

2011-10-04 11:18
0

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


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

2011-10-04 11:30
opengl
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

Pozostało 580 znaków

2011-10-04 11:38
0

GLUTa pewnie trzeba zainstalować osobno :]


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.

Pozostało 580 znaków

2011-10-04 11:45
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.

Pozostało 580 znaków

2011-10-04 16:47
że tak zapytam
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?

Pozostało 580 znaków

2011-10-04 17:12
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.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 2x, ostatnio: Wibowit, 2011-10-04 17:18

Pozostało 580 znaków

2011-10-05 09:34
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.

Pisząc w Javie może być jeszcze łatwiej. - Wibowit 2011-10-05 15:00
A pisząc w Pythonie z użyciem pygame i pyopengl może być jeszcze łatwiej... - Spine 2011-10-07 11:16

Pozostało 580 znaków

2011-10-06 18:32
opengl
0

Słuchajcie .. kompilowałem i zrobiłem wszystko, wg tego poradnika, który znalazłem w sieci (jako załącznik), ale dla kodu, który umieściłem powyżej, kompilując, otrzymuję taki błąd;

/tmp/ccU8YBFs.o: In function `GL_Setup(int, int)':
glut_file.cpp:(.text+0x1bc): undefined reference to `gluPerspective'
collect2: ld returned 1 exit status

I teraz: błąd jest w kodzie, czy ten poradnik jest do d*** i coś źle poinstalowałem? Oczywiście zamiast <GL/glut.h> dałem <GL/freeglut.h> ale to jedyna różnica w kodzie ...

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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