OpenGL i Visual Studio

1

OpenGL i Visual Studio

offline
  • Pridružio: 10 Dec 2005
  • Poruke: 355

Da ne otvaram novu temu, gde mogu da skinem OpenGL i da li moze da se skine za C++ VS2005?
Pa tako da se programira za igre.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 17 Mar 2004
  • Poruke: 293
  • Gde živiš: UK

OpenGL ne morash da skidash, hederi vec dolaze uz svaki kompajler a dll-ove vec imash instalirane. Sve shto treba da uradish je da u kompajleru sve to lepo vezhesh.

Pogledaj OVDE kako to da uradish



offline
  • Nom  Male
  • Građanin
  • Pridružio: 17 Nov 2004
  • Poruke: 168
  • Gde živiš: Shanghai, China

@student

instaliraj najnovije drajvere za tvoju karticu. u "originalnim" u vecini slucajeva nema ni O od OpenGL-a.....

@bNasty
NE DOLAZE svi hederi uz kompajler... uzmi na primer glext.h....

@student

poskidaj primere sa [Link mogu videti samo ulogovani korisnici]
tu imas primere za VS, isto i konverzije za BCB i druge kompajlere... primeri vec koriste gl, pa mozes videti iz projekt fajlova kako je sve podeseno... u sustini, inkludujes gl.h, glu.h, glext.h i eventualno jos po nesto.. zavisi sta ces da koristis... i isto tako lib-ove..

offline
  • Pridružio: 10 Dec 2005
  • Poruke: 355

Znam da uradim do 3 koraka, dalje ne znam. Sad

@Nom poskidao sam sve tutoriale sa [Link mogu videti samo ulogovani korisnici] Smile
Inst. sam najnoviji driver za kartu.
Imam samo VS2005 i DEV-cpp
A ja sam sve kopirao (ono sta treba) u VS2005, nisam u DEV-cpp.



Peca ::--- Spremanje kompajlera za OpenGL pod Windowsom ---

----------------- 0. korak -----------------
Prvo, evo koji su sve fajlovi potrebni (podelicu ih u 3 grupe):

- gl.h
- glu.h
- glut.h (opciono, mada preporucujem koriscenje GLUT-a)

- opengl32.dll (vec ga imate u sistemskom direktorijumu Windowsa)
- glu32.dll (takodje ga imate u sistemskom direktorijumu Windowsa)
- glut32.dll (opciono)

- opengl32.lib
- glu32.lib
- glut32.lib (opciono)

----------------- 1. korak -----------------

Generalno, svaki normalan kompajler vec ima gl.h i glu.h.
Dakle, verovatno vam samo treba glut.h, i njega mozete skinuti sa [Link mogu videti samo ulogovani korisnici] (treba vam ona binarna verzija, koja sadrzi, header fajl, dll fajl, i lib fajl za VC++).
Sa tog sajta cete skinuti ZIP fajl u kojem cete naci glut.h, koji trebate da iskopirate u direktorijum /include/GL vaseg kompajlera. Ako ne znate koji je to direktorijum, potrazite na disku fajl gl.h i pogledajte u kom direktoriju se on nalazi - u tom treba i ovaj.

Ako pak nemate gl.h i glu.h, onda:
1) ili skinite Mesa biblioteku - [Link mogu videti samo ulogovani korisnici] Trebalo bi da je iskompajlirate, a ako vam to ne podje za rukom onda procitajte drugi predlog.
2) ili skinite [Link mogu videti samo ulogovani korisnici] - tu cete naci gl.h i glu.h.
Prvi predlog NE preporucujem pocetnicima, jer ne verujem da ce uspeti da iskompajliraju Mesa biblioteku. Za pocetnike preporucujem drugi predlog!


----------------- 2. korak -----------------

Dalje, opengl32.dll i glu32.dll 99% vec imate u sistemskom direktorijumu Windowsa. Ako ih nemate, skinite ih sa [Link mogu videti samo ulogovani korisnici] (ovaj link smo vec gore davali) i iskopirajte ih u sistemskom direktorijumu Windowsa.
Fajl glut32.dll se nalazi u onom GLUT-ovom ZIP fajlu koji ste vec skinuli, i njega iskopirajte u sistemski direktorijum Windowsa (najcesce je to c:\windows\system)

----------------- 3. korak -----------------

I na kraju treba kreirati .lib fajlove.
LIB fajlovi sadrze spisak funkcija koji neki DLL sadrzi. Kompajleru je potreban taj spisak da bi znao koje funkcije (koje pozivas iz programa) postoje u odredjenom DLL-u.

Kod VC++a su .lib fajlovi vec kreirani, ili se kreiraju automatski, tako da ako koristite VC++ nista ne trebate da radite u ovom koraku.
Ovo pricam napamet (tako sam cuo), jer nemam kod sebe VC++ da ovo proverim.
Moguce je jedino (ako koristite VC++) da vam nedostaje glut32.lib, a njega imate u onom GLUT-ovom ZIP fajlu koji ste skinuli. Iskopirajte ga u /lib direktorijum VC++a (putanja je skoro ista kao do /include, samo sto se ne zavrsava sa /include nego sa /lib)
Ako kojim slucajem nemate opengl32.lib i glu32.lib - skinite [Link mogu videti samo ulogovani korisnici] (ovaj link smo vec davali gore) - tu cete ih naci, pa ih samo iskopirajte /lib direktorijum VC++a.

Kreiranje .lib fajlova kod Borlandovog kompajlera se postize komandom implib [imefajla].lib [imefajla].dll (koju naravno treba ukucati u command promptu).
Generalno, treba otkucati sledece ako koristite Borlandov kompajler:
implib opengl32.lib opengl32.dll
implib glu32.lib glu32.dll
implib glut32.lib glut32.dll
Kada pravite ove .lib fajlove, vodite racuna da vam .dll fajlovi (koje navodite) budu u direktorijumu u kojem se nalazite. Fajlove opengl32.dll i glu32.dll imate u sistemskom direktorijumu Windowsa, pa ili ih iskopirajte u direktorijum u kome se nalazite, ili u komandoj liniji navedite putanju do DLLa (ovako: implib glu32.lib c:\windows\system32\glu32.dll). Fajl glut32.dll imate u onom GLUT-ovom ZIP fajlu koji ste skinuli...
Kreirane .lib fajlove zatim treba iskopirati u /lib direktorijum vaseg kompajlera (putanja je skoro ista kao do /include, samo sto se ne zavrsava sa /include nego sa /lib).

Verovatno je i kod ostalih kompajlera slican postupak kreiranja .lib fajla (mozda cak i potpuno isti).

----------------- 4. korak -----------------
Svo 'spremanje kompajlera' je gotovo, i sada treba videti kako izgleda jedan OpenGL program:

Citat:


#if (defined(__WIN32__) || defined(WIN32))
#include <windows.h>
#endif

#include <stdio.h>
#include <stdlib.h>

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>

GLfloat boja1[] = { 0.3, 0.7, 0.0, 1.0 };
GLfloat boja2[] = { 0.0, 0.2, 0.8, 1.0 };
float i=0;

void draw(void)
{
i++;
if (i>360) i=0;

glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glPushMatrix();
glTranslatef (0, 0, 50);
glMaterialfv(GL_FRONT, GL_DIFFUSE, boja1);
glBegin (GL_QUADS);
glTexCoord2f (0.0,0.0);
glVertex3f (-10.0, -10.0, 20.0);
glTexCoord2f (1.0, 0.0);
glVertex3f (10.0, -10.0, 35.0);
glTexCoord2f (1.0, 1.0);
glVertex3f (10.0, 10.0, 0.0);
glTexCoord2f (0.0, 1.0);
glVertex3f (-10.0, 10.0, 0.0);
glEnd ();
glPopMatrix();

glPushMatrix();
glTranslatef (0, 0, 50);
glRotatef(i, 1, 0, 0);
glRotatef(i, 0, 1, 0);
glMaterialfv(GL_FRONT, GL_DIFFUSE, boja2);
glutSolidTorus (1, 3, 3, 3);
glPopMatrix();

glutSwapBuffers();
}

void light (void)
{
GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };
glLightfv (GL_LIGHT0, GL_POSITION, light_position);
glEnable (GL_LIGHTING);
glEnable (GL_LIGHT0);
glEnable(GL_DEPTH_TEST);
}

void reshape (int width, int height)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f, (GLfloat)width/(GLfloat)height, 1.0f, 1000.0f);
gluLookAt(0, 0, -1, 0, 0, 0, 0, 1.0, 0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

void keyboard(unsigned char key, int x, int y)
{
switch (key) {
case 27:
exit(0);
break;
}
}

int main(int argc, char* argv[]) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE |GLUT_RGB|GLUT_DEPTH);
glutEnterGameMode();
glutDisplayFunc(draw);
glutSetCursor(GLUT_CURSOR_NONE);
reshape(640,480);
light();
glutKeyboardFunc(keyboard);
glutIdleFunc(draw);
glutMainLoop();
return 0;
}



Znate vec kako se kompajlira...
Ako koristite Borland C/C++ FREE compiler (koga mozete skinuti sa [Link mogu videti samo ulogovani korisnici] - 8.5 MB), to ide ovako (u command promptu): bcc32 primer.c
Ako se bcc32 ne odaziva, verovatno niste procitali readme.txt koji zahteva da se rucno konfigurisu putanje do kompajlera i linkera.

Za ucenje OpenGL-a preporucujem odlican tutorijal na adresi: [Link mogu videti samo ulogovani korisnici]
Srecno!!!

offline
  • Nom  Male
  • Građanin
  • Pridružio: 17 Nov 2004
  • Poruke: 168
  • Gde živiš: Shanghai, China

@student

pa ako si uradio sva tri koraka, sta je onda problem?

p.s. instaliraj ti nove drajvere i pusti to sto imas vec opengl32.dll.... to sto ide uz win je trash.....

offline
  • Pridružio: 10 Dec 2005
  • Poruke: 355

Znam da uradim DO 3 koraka (znaci nisam uradio 3 korak)

offline
  • Nom  Male
  • Građanin
  • Pridružio: 17 Nov 2004
  • Poruke: 168
  • Gde živiš: Shanghai, China

Hmmmm... pa cuj, u ovom primeru, taj treci korak mi je potpuno konfuzan.... pogledaj primere sa neon heliuma, i videces kako je tamo to uradjeno.. ovaj ga je previse zakomplikovao...

sve sto treba je da linkujes lib-ove, sto mozes ili u settings-u projekta ili "rucno" tj.
#pragma comment(lib,"opengl32") #pragma comment(lib,"glu32")

i da stavis header-e:

#include "gl.h" #include "glu.h"

ako zelis da koristi glut da bi otvorio prozor sa vec bind-ovanim device context-om za gl-ov (tako da swap buffer radi), onda prvo potrazi primere za glut u kome je samo to: kako otvoriti prozor...

ja bih ti preporucio da pogledas u ne-he-ovim primerima kako su oni radili, mislim da je tamo lepo rucno sve odradjeno, od registrovanja prozora do pixel format descriptora, GetDC i td....

sta ti je tacno problem? sta ne umes u 3em koraku da uradis?

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

VS bi trebao da ima vec gotove gl.lib i glu.lib
samo treba da ih linkuje, kao sto sam i napisao...

offline
  • Nom  Male
  • Građanin
  • Pridružio: 17 Nov 2004
  • Poruke: 168
  • Gde živiš: Shanghai, China

@peca

pa da, to me i zbunjuje u tom 3em koraku...???

offline
  • Peca  Male
  • Glavni Administrator
  • Predrag Damnjanović
  • SysAdmin i programer
  • Pridružio: 17 Apr 2003
  • Poruke: 23211
  • Gde živiš: Niš

Citat:----------------- 3. korak -----------------

I na kraju treba kreirati .lib fajlove.
LIB fajlovi sadrze spisak funkcija koji neki DLL sadrzi. Kompajleru je potreban taj spisak da bi znao koje funkcije (koje pozivas iz programa) postoje u odredjenom DLL-u.

Kod VC++a su .lib fajlovi vec kreirani, ili se kreiraju automatski, tako da ako koristite VC++ nista ne trebate da radite u ovom koraku.


sta je tu zbunjujuce?
kad kazem VC++ mislim na VS, to je bar jasno?

Ko je trenutno na forumu
 

Ukupno su 1368 korisnika na forumu :: 123 registrovanih, 12 sakrivenih i 1233 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Abebe Bikila, Agape, anta, Apok, Avangard, bestguarder, Betty25, bigfoot, Bivan, boban977, Bobrock1, boj.an, Bojan198527, bojan581, bojan_t, Bole72, Boris BM, borya90, cemix, Centauro, Chainsaw, Cian, Citalac, Dannyboy, Darth Wader, deLacy, Django777, djuradj, Dogma21, Dolinc, Drakce65, DrSidious, dukajov, Electron, esko_hz, filip1326, francis begbie, g_g, GrobarPovratak, GveX, ikan, Ir, Ivan Campo, ivicasimo, jakci_groni, Japidson, jodzula, Joja, Jomini, Još malo pa deda, K-1A, Karla, kaskadija, kinez88, klepesina, komsija1, krkalon, Kubovac, Kuroje, M74AB3, mane123, Manesaur, Metanoja, mexo, MGBRBG, mgolub, Miki 84, miki kv, Miki01, milenko crazy north, milenko1980, Milo97, MiroslavD, Mićko, N.e.m.a.nj.a., Najax, nazgul75, nebidrag, nebojsag, nnovakis, oganj123, omen, padamacki, pavle_pzs, pfc74, Pinchroller, pobeda, Povratak1912, Prašinar, pristinski korpus, raf87, Ranutovac, Ray1973, SamostalniReferent, sap, Sarmat, Shinobi, sluga, smerch, smuk, SOVO515, SpeedyGonzales, Stanislav1970, stankolich, tamno.nebo, Tas011, The Boss, trajkoni018, tuja, Tvrtko I, ujke, varda, VaRvArI 85, vathra, Vlad000, vlad4, Vlada1389, Vladonius, Vrač, Zavulon, ZetaMan, zmajognjeniivan, ZZZ