Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

[OpenGL] Visual Studio 2010

Ostatnie zmagania na uczelni w tym semestrze za mną. Mogę więc rozpocząć cykl wpisów w pełni poświęconych OpenGL, o którym niedawno wspomniałem. Na początku oczywiście trzeba poustawiać to i owo w nowym projekcie aby odpowiadał oczekiwaniom. Zabieramy się, więc do dzieła!

O bibliotece słów kilka

Zazwyczaj przy dodawaniu nowych bibliotek, z których korzystamy, kopiujemy ich zawartość do odpowiednich folderów zawierających nagłówki, pliki .lib oraz .dll, które są przeszukiwane przez kompilator/IDE. Dla Visual Studio 2010 są to foldery

C:\Windows\System\ lub C:\Windows\System32\ (miejsce dla plików .dll) C:\Program Files\Microsoft Visual Studio 10.0\VC\include\ (miejsce dla nagłówków .h) C:\Program Files\Microsoft Visual Studio 10.0\VC\lib\ (miejsce dla bibliotek .lib)

Chcąc aby tworzony projekt był przenośny między maszynami i niezależny od zainstalowanych już bibliotek, konieczne jest odpowiednie skonfigurowanie projektu. Podstawową wymaganą biblioteką przy pracy z OpenGL jest GLUT czyli The OpenGL Utility Toolkit, która ułatwia proces tworzenia i zarządzania aplikacją. Z racji tego, że ostatnie wydanie tej biblioteki było w sierpniu 1998 roku, będę używał bliźniaczej biblioteki o otwartych źródłach FreeGLUT. Już przygotowaną paczkę dla MSVC (Microsoft Visual C++) możecie pobrać z tej strony.

Po pobraniu biblioteki, kolejne czynności jakie wykonałem to

  • stworzenie nowego repozytorium na github, dostępne pod tym linkiem
  • sklonowanie go do wybranego przez siebie folderu E:\code_remote\OGL\
  • utworzenie nowego projektu w Visual Studio w podanym wyżej katalogu

A teraz VS2010

Ważne jest aby zaznaczyć, że to ma być pusty projekt w języku C++. Następnie kopiujemy do projektu foldery ze ściągniętej paczki i zmieniamy nazwę folderu z bin na dll. Struktura projektu powinna wyglądać następująco

Teraz trzeba ustawić odpowiednie ścieżki aby kompilator mógł ich użyć. Z menu kontekstowego wybierz "Properties". Z rozwijanej listy na górze okna zmień z konfiguracji "Active" na "All Configurations". W zakładce "Configuration Properties ->VC++ Directories" edytuj "Include Directories" oraz "Library Directories". Do pierwszej podanej wyżej zmiennej dodaj wartość

$(ProjectDir)include\

natomiast do drugiej

$(ProjectDir)lib\

"$(ProjectDir)" jest to macro, które wskazuje bezpośrednio na katalog w którym znajduje się projekt niezależnie od miejsca w którym się znajduje. Na zdjęciu poniżej możesz zobaczyć jaką wartość ma u mnie i porównać z tą u siebie.

Oraz test

Tak skonfigurowana Solucja jest przygotowana do rozpoczęcia pracy z OpenGL. Możesz używać jej jako szablonu dla każdego nowego programu. W repozytorium na github jest odpowiedni tag, aby można było w łatwy sposób odnaleźć tą wersję. Dołączam również program demonstrujący, że powyższa konfiguracja działa. Wyświetla on biały kwadrat na czarnym tle.

Teraz możemy przejść do rzeczy istotniejszych, czyli do samego OpenGL'a. Tak więc opisem co się dzieje tam w środku i jak tym sterować zajmę się w kolejnych wpisach. Jeżeli natomiast masz jakieś sugestie lub napotkałeś problemy zachęcam do skontaktowania się. Razem na pewno znajdziemy rozwiązanie :)

Ciao :) 

windows porady programowanie

Komentarze

0 nowych
  #1 02.07.2012 17:43

Po skopiowaniu pliku dll do system32 visual wywala błąd, dopiero po skopiowaniu do folderu system wszystko jest ok. Nie wiem czy tez masz taki problem, ale u mnie tak wyglądało :) Pisze to jakby u kogoś także nie działało po skopiowaniu do system32. :)

  #2 03.07.2012 11:17

Mi tam nie działa, nie znajduje freeglut.dll i sugeruje ponowną instalację programu... Co robić?

vircung   5 #3 03.07.2012 19:15

@kolegapofachu Dzięki za słuszną uwagę, już poprawiam.

@anonim Jeśli sam utworzyłeś projekt to pierwszą przyczyną takiej sytuacji jaka mi się nasuwa to jest złe/brak ustawienia wskazania do folderu z plikiem .lib. Pamiętaj też, że musisz edytować ścieżki do folderów 'include' i 'lib' dla wszystkich konfiguracji. Tą opcję wybiera się na samej górze okna z właściwościami projektu z rozwijanej listy.

  #4 03.07.2012 23:36

Tak się składa, że właśnie ściągłem z Twojego githuba te pliki :)
Przypuszczam, że działa to u Ciebie bo skopiowałeś freeglut.dll do folderu system.

Mógłbyś spróbować usunąć ten plik i skompilować program?
Czuje, że się nie otworzy :(

vircung   5 #5 04.07.2012 10:14

@anonim

Tak się też składa, że nie mam tej dll'ki w folderze systemowym, Ten błąd pojawia Ci się podczas kompilacji czy uruchamiania programu? Bo to też jest ważne i pomoże znaleźć problem. oraz rozwiązanie.

  #6 04.07.2012 14:24

No to mam problem. Błąd wyskakuje przy uruchomieniu programu. Jeśli wiesz co robić to byłoby fajnie, jeśli nie to trudno :) Z góry dzięki :P

vircung   5 #7 04.07.2012 18:19

@anonim

Skopiuj brakujący plik .dll do foldery gdzie znajduje się .exe, powinno rozwiązać problem. Najpóźniej jutro ukarze się post z zapobiegnięciem występowania takiej sytuacji.

vircung   5 #8 05.07.2012 02:39

@anonim

Jeżeli skopiowanie pliku okaże się poprawnym rozwiązaniem to prosiłbym o potwierdzenie :)

  #9 05.07.2012 08:38

@vircung
Hah... 2:39! Po co spać skoro można kodzić :P
Działa :) dzięki za pomoc.

vircung   5 #10 05.07.2012 11:24

@anonim
Świetnie że pomogło. Jak obiecałem, wpis o dodatkowej konfiguracji VS pojawił się.

Kiedyś na szkoleniu z Windows Phone 7.5 szkoleniowiec zaszczycił całą grupę ciekawym komentarzem "Nie siedzicie nad kodem do 4 w nocy? Wy jacyś dziwni jesteście" :D Cóż poradzić na to że lubi się posiedzieć do późna przy komputerze, szczególnie gdy można sobie na to pozwolić :)

  #11 05.07.2012 14:33

@vircung
Nie ma nic lepszego od zaliczenia sesji w pierwszym terminie i wakacjami :D

Hmm.. u mnie kobieta prowadząca zajęcia od programowania też taki mówi. Sama pracuje do 5 rano, nawet w sobote, totalnie znisczona życiem Oo Wygląda na starszą niż jest :)

A takie jeszcze jedno pytanie mam odnośnie jej konsoli, bo używać visuala zacząłem dopiero na kursie windows phone, który odbył się nie dawno :) Jak wyłączyć tą konsolę? Jakoś mnie irytuje jej obecność :P

vircung   5 #12 07.07.2012 21:55

@anonim
Konsolę możesz "wyłączyć/włączyć" za pomocą FreeConsole()/AllocateConsole(). Jeżeli nie masz dostępu do tych metod to dołącz Windows.h. Konsola jednak przydaje się do debugowania, czy sprawdzania różnych rzeczy, jak np we wpisie o klawiaturze.

lambd   2 #13 08.07.2012 23:42

Kiedy próbuję uruchomić program dostaję taki błąd:
The program '[2656] OpenGL.exe: Native' has exited with code -1073741701 (0xc000007b).

Jakieś pomysły co może być nie tak? :)

vircung   5 #14 09.07.2012 12:43

@lambd
Z tego co znalazłem na temat tego błędu to prawdopodobnie masz coś nie tak z bibliotekami, np biblioteka 32bit do buildu 64bit lub odwrotnie. Spróbuj zastosować się do porad z tych tematów ze StackOverflow :
http://stackoverflow.com/questions/8683880/opengl-gives-invalid-image-format
http://stackoverflow.com/questions/5372565/runtime-error-dll-loading-with-win32-...
Jeśli któreś z tych rozwiązań pomoże, prosiłbym o informację.

lambd   2 #15 10.07.2012 10:45

Udało się uruchomić. Problem był z biblioteką freeglut, która była na system 64 bit. Dzięki za pomoc.

http://stackoverflow.com/questions/5372565/runtime-error-dll-loading-with-win32-...

  #16 13.10.2012 23:06

nie mam pliku .git i tych OpenGL. Może z paczką coś nie tak... Odpisz na jacek.bulowski@gmail.com Proszę!!!