Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Glut => unutar Mfc sa dialogom ili win32 consola

[es] :: 3D programiranje :: Glut => unutar Mfc sa dialogom ili win32 consola

[ Pregleda: 2952 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Josipn
Josip Nizetic
Zagreb

Član broj: 101640
Poruke: 11
*.adsl.net.t-com.hr.



Profil

icon Glut => unutar Mfc sa dialogom ili win32 consola15.07.2006. u 22:59 - pre 215 meseci
Pozdrav,

Radim na nekom kodu pisanom u c, koji koristi GLUT. Sada je potrebno izvuci iz njega GUI van (jer je u prijasnjem kodu cijelo sucelje , tj. svi buttoni i edit textovi bili napisani unutar GLUTA). Zelja je sve njih staviti staviti na neki dialog, a samo izgled predmeta ostaviti u openGL.


Moje pitanje je:

Da li je moguce sa raditi MFC u kombinaciji sa glutom...... Znaci ne bi koristio CreateWindow vec bi ga volio ukomponirati u Dijalog/Formu..
ili moram striktno koristiti Win 32 sa consolom i tamo raditi......


Hvala na Pomoci
Josip
 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.funcom.com.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola16.07.2006. u 12:44 - pre 215 meseci
Kazi google-u da trazi CDialog wglCreateContext...
npr. ono sto tebi verovatno treba je "How to Create a CHILD OpenGL Window in a Dialog" (http://www.codeguru.com/cpp/g-m/opengl/article.php/c5583/)
 
Odgovor na temu

Josipn
Josip Nizetic
Zagreb

Član broj: 101640
Poruke: 11
*.adsl.net.t-com.hr.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola16.07.2006. u 14:37 - pre 215 meseci
Prvo hvala na odgovoru,

to sam vec proucio no muci me:

kao sto vec znas osnovne naredbe za glut npr.

glutInitWindowSize(1000, 550);
glutInitWindowPosition(0,190);

glutInitDisplayMode(GLUT_DOUBLE| GLUT_RGB | GLUT_DEPTH );
gl.main_window =glutCreateWindow("Moj prozor");
gl.Init();

glutReshapeFunc(reshape );
glutDisplayFunc(display);
glutKeyboardFunc(Key);
glutSpecialFunc(Special);
glutMouseFunc(mouse);
glutMotionFunc(motion);
glutPassiveMotionFunc(curpos);



glutTimerFunc(100, MOJ_refresh, 0);

glutMainLoop();


e sad moje pitanje, kao i u navedenom primjeru iz prijasnjeg posta postoji render funkcija koja mijenja sadražaj. Kako nju prilagoditi da mogu koristiti gore navedene funkcije iz gluta(display,reshape....), a da ne moram pisati kod unutar

glBegin
...
glEnd.

tj da mogu koristiti vec napisane funkcije....

Pozdrav
Josip
 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.funcom.com.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola16.07.2006. u 15:17 - pre 215 meseci
- sustina gluta (posebno gore navedenih funkcija) je da se izbegne pisanje koda koji je specifican za svaku platformu pa glutMainLoop, izmedju ostalog, zamenjuje smornu switch/case strukturu kojom distribuiras event-e koji stizu u prozor. S druge strane MFC ima slican fazon distribucije "dogadjaja" koji takodje sakriva od "korisnika" (citaj: nesrecnika koji mora da koristi MFC) pomenutu switch/case (osim doc/view patterna mozda jedna od najsvetlijih tacaka MFC-a). Nisam siguran koliko je moguce pomiriti i izmesati ta dva koncepta posebno u okviru neke kontrole izvedene npr. iz CStatic.
Medjutim, moguce je koristiti neke druge delove GLUT-a u koje ne spada glutMainLoop i funkcije koje idu uz nju ( glutReshapeFunc(reshape ), glutDisplayFunc(display), glutKeyboardFunc(Key), glutSpecialFunc(Special), glutMouseFunc(mouse), glutMotionFunc(motion), glutPassiveMotionFunc(curpos)...). Npr. mozes da koristis glutSolidSphere...
Inace, nema renderinga u OGL bez glBegin i glEnd. Vrlo je nezahvalno deliti savete ali moja preporuka ti je da batalis glut i koliko je moguce MFC i da koristis OpenGL uz cist Win32 api. Pogledaj "Vodic za potpune ili skoro potpune pocetnike" u "GameDev - Razvoj Igara": OpenGL programiranje - http://nehe.gamedev.net/...
 
Odgovor na temu

Josipn
Josip Nizetic
Zagreb

Član broj: 101640
Poruke: 11
*.adsl.net.t-com.hr.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola16.07.2006. u 15:36 - pre 215 meseci
E bas ti hvala, surfam danima i svatko daje nekakve tutoriale ali nitko da kaze sta je sta....

Sada mi je jasno, ali sada me zanima jos nesto. Unutar te display funkcije je kod opisan glfunkcijama, da li ga je moguce izvuci i pobacati u reender funkciju?..... Ili mi je potrebno sve promjeniti?....


Nije da mi je tesko ali dobio sam zadatak prikazati taj kod - koji crta stopalo + dialog za unos parametara. Kao sto sam vec rekao sve je u radjeno u Glutu, a sada bi dijaloge.... Glavni problem je sta kod ima 35000 linija koda , a ja tjedan dana:-)
Josip
 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.funcom.com.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola16.07.2006. u 15:51 - pre 215 meseci
Ako je vec za skolu mora da si cuo za nesto tipa "prepisivanje"... Ali ako si vec resio da ides duzim putem pogledaj kako je napisana aplikacija koja crta u dijalogu. Na tebi je samo da izmenis kod u f-ji void COpenGL::OnPaint() i naravno napravi ga zavisnim od parametara koje imas u dlg box-u. Pocni od ovoga:
Code:

void COpenGL::OnPaint()
{
  CPaintDC dc(this);

  HDC hdc = ::GetDC(m_hWnd);
  HGLRC hglrc;

  glClearColor(0,0,0,0);
  glColor3f(1, 1, 1);

  if (hglrc = wglCreateContext(hdc))
  {
    // try to make it the thread's current rendering context
    if(wglMakeCurrent(hdc, hglrc))
    {
      //render here
      glClear(GL_COLOR_BUFFER_BIT);
      ... ovde ubaci svoj deo koda za rendering
      SwapBuffers(hdc);
    }
  }

  wglMakeCurrent(NULL, NULL) ;
  ::ReleaseDC (m_hWnd, hdc) ;
  wglDeleteContext(hglrc);
}

 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.beotel.net.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola16.07.2006. u 15:54 - pre 215 meseci
@dragansm:
Nije nesrecnik onaj koji koristi MFC, vec onaj koji nezna da ga korsiti a komentarise upotrebljivost istog.

@Josip:
U tvom slucaju, najbolje bi bilo da napravis npr. CGLView klasu koja je izvedena iz MFC CWnd klase. Pokreni wizard i napravi takvu klasu.
Sada dodaj metode za inicijalizaciju OpenGL-a, preklopi OnPaint metodu i tu pozovi code za crtanje scene iz GL-a a zatim SwapBuffers(da bi prikazao iscrtanu sliku). Mozes da preklopis i metode za rad sa tastaturom (OnKeyUp/Down) i misem (OnMouseXXXXX).. U tim funkcijama samo promeni neko stanje i pozovi Invalidate metodu, koja ce kasnije pozvati OnPaint.

GLUT funkcije ce sada zameniti sledece:

glutInitWindowSize(1000, 550);
glutInitWindowPosition(0,190);
glutInitDisplayMode(GLUT_DOUBLE| GLUT_RGB | GLUT_DEPTH );
gl.main_window =glutCreateWindow("Moj prozor");
gl.Init();
Create ili OnCreate

glutReshapeFunc(reshape ); => OnSize
glutDisplayFunc(display); => OnPaint
glutKeyboardFunc(Key); => OnKeyUp/Down
glutMouseFunc(mouse); => OnMouseXXXXXXX


Da ne tupim dalje.... ovde imas sve sto ti treba:
http://www.codeguru.com/cpp/cp.../tutorials/article.php/c10975/
http://steinsoft.net/index.php...amming/Tutorials/opengl_dialog
http://www.gamedev.net/reference/articles/article1358.asp
 
Odgovor na temu

Josipn
Josip Nizetic
Zagreb

Član broj: 101640
Poruke: 11
*.adsl.net.t-com.hr.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola16.07.2006. u 16:00 - pre 215 meseci
Da koristio sam taj kod, i pokusao sam unjeti kod na predvidjenom mjestu.

No upisao sam samo display();, jer sam mislio da da posto su sve funkcije unutra moci biti definirano na taj nacin. No aplikacija puca. Pokusao sam i preko klase i direkt upis funkcija, ali ne radi... A nista morat cu rucno upisati naredbe na tom predvidjenom mjestu...

Da li mozda znas za neki primjere ili tutoriale GLUT to OpenGL ili da se baziram na nehe...

P.S. hvala yooyo budem pogledao cini se zanimljivo.....
Josip
 
Odgovor na temu

dragansm
Dragan Smiljanic

Član broj: 38170
Poruke: 191
*.funcom.com.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola16.07.2006. u 16:23 - pre 215 meseci
Citat:
yooyo: @dragansm:
Nije nesrecnik onaj koji koristi MFC, vec onaj koji nezna da ga korsiti a komentarise upotrebljivost istog.


"nezna" su obicno dve reci... a sto se tice MFC... siguran sam da si potpuno upravu. Pozdrav
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.beotel.net.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola16.07.2006. u 17:52 - pre 215 meseci
Pazi... GLUT je multiplatformski startup code za OpenGL. Koriscenjem GLUT-a i OpenGL-a mozes napraviti potpuno platformski nezavistan program.
Kada kazes da hoces da koristis OpenGL u MFC okruzenju, to znaci da se vezujes za Windows platformu. Ono sto treba da uradis je da napravis svoje zamene za GLUT funkcije. Tvoj program moze ostati isti, samo treba da pozivas display, mouse i keyboard funkcije iz MFC prozora.

Kao sto sam vec napisao... kreiranje prozora ce se odraditi iz MFC-a. Kreiranje OpenGL contexta ces odraditi posle kreiranje prozora (ima u primeru). display funkciju ces pozivati iz OnPaint, keyboard funkciju ces pozivati iz OnKeyUp i OnKeyDown... potrebno je samo da konvertujes parametre. Mouse func ces pozivati iz OnMouseMove, OnMouseLButton/RButton/MButton i opet, konvertuj parametre.

Timer funkcija ti mozda nece trebati jer ces sadrzaj prozora osvezavati pomocu OnPaint metode, tj.. iscrtavaces po potrebi kada se neki od parametara koji uticu na sliku promeni, samo pozovi Invalidate i sistem dogadjaja unutar MFC-a ce pozvati OnPaint koji ce pozvati tvoju display funkciju.

 
Odgovor na temu

Josipn
Josip Nizetic
Zagreb

Član broj: 101640
Poruke: 11
*.adsl.net.t-com.hr.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola16.07.2006. u 22:28 - pre 215 meseci
Hvala na odgovoru - tako cu i napraviti...

Samo me zanima sta ti znaci "konvertujes parametre", tj na sta se to odnosi ?
Josip
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.beotel.net.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola16.07.2006. u 23:17 - pre 215 meseci
Pa npr.... glutKeyboard func valjda prihvata ASCII karakter pritisnutog tastera a OnKeyUp/Down salje virtual key. Ako tvoja stara funkcija za detekotovanje koji je taster pritisnut koristi ASCII vrednosti onda konvertuj VK -> ASCII pre pozivanja tvoje func... ili jos bolje... prepravi tvoju funckiju tako da radi sa virtual key i onda nema potrebe da vrsis konverziju.
Slicno vazi i za mouse func.
 
Odgovor na temu

Josipn
Josip Nizetic
Zagreb

Član broj: 101640
Poruke: 11
*.adsl.net.t-com.hr.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola16.07.2006. u 23:27 - pre 215 meseci
Hvala jos jednom...

Sada cu se zezat sa time. Malo me muci display funkcija ali nista bez malo muke:-)


Pozdrav veliki jos jednom!!!
Josip
 
Odgovor na temu

Josipn
Josip Nizetic
Zagreb

Član broj: 101640
Poruke: 11
*.adsl.net.t-com.hr.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola19.07.2006. u 10:37 - pre 215 meseci
Jos jedan upit...


Znam da u glutu postoji naredba subwindow koja omogućuje stvaranja podprozora. Kako sa mfc ne mogu koristiti glut, da li postoji način kako da se to izvede unutar jednog okvira, ili će se za svako pogled morati stvotiti zasebni okvir?

Hvala
Josip
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.beotel.net.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola19.07.2006. u 22:45 - pre 215 meseci
Hmm... da li zelis da otvoris jos jedan "GL view" u okviru istog dialog box-a ili zelis da otvoris novi dialog sa "GL view" kontrolom?
U svakom slucaju.... verovatno ces napraviti novi OpenGL context, sto znaci da ces morati da pozivas wglMakeCurrent(glrc, hdc) pre svih ogl komandi (u OnPaint i OnSize).

Verovatno ce ti trebati sledece sitnice:
CResizableDialog - http://www.codeproject.com/dialog/resizabledialog.asp
Dynamic Dialog Class - http://www.codeproject.com/dialog/dynamicdialog.asp
http://groups.google.com/group...m=2&hl=en#5c9dcdcac045ca28


Neznam koilko je komplikovana ta tvoja aplikacija, tako da bi najbolje bilo da prvo smislis kako treba da izgleda pa tek onda da isprogramiras. Mozda nije resenje da budzis dialog box vec da razmislis o MFC Doc/View arhitekturi. Doc/View ti omogucava da imas podatke sa kojima radis (Doc) i vose razlicitih pogleda (View) na podatke. MFC je malo zeznut za prepravljanje kada zelis da promenis dizajn aplikacije.

yooyo
 
Odgovor na temu

Josipn
Josip Nizetic
Zagreb

Član broj: 101640
Poruke: 11
*.adsl.net.t-com.hr.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola19.07.2006. u 23:53 - pre 215 meseci
Prvo, velika hvala na trudu....



Ipak cini se da će biti ovako:

Citat:
yooyo
U svakom slucaju.... verovatno ces napraviti novi OpenGL context, sto znaci da ces morati da pozivas wglMakeCurrent(glrc, hdc) pre svih ogl komandi (u OnPaint i OnSize).

yooyo


Potrebna su mi 3 prozora, jedan glavni i dva sporedna (right ili left top ili bottom). Samo se na glavnome mogu mijenjati stvari, a sporedni se samo trebaju updatati , samo sa drugim view-om. Mislim da sada imam sliku kako to napraviti.

Jos jednom hvala......
Josip
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.beotel.net.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola20.07.2006. u 01:49 - pre 215 meseci
U tom slucaju.... tebi treba ovo:
http://www.gamedev.net/reference/articles/article1358.asp

Skini demo i promeni u file-u OpenGLWnd.cpp

Code:

COpenGLWnd::COpenGLWnd()
{
    m_RenderScene = DrawCube; //DrawDocWire;    // Set the default draw function.
}


u slucaju da nemas neki .md3 model pri ruci.

[Ovu poruku je menjao yooyo dana 20.07.2006. u 03:02 GMT+1]
 
Odgovor na temu

Josipn
Josip Nizetic
Zagreb

Član broj: 101640
Poruke: 11
*.adsl.net.t-com.hr.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola20.07.2006. u 02:03 - pre 215 meseci
Da to sam proucavao, ali covjek za kojeg radim aplikaciju ne želi da se vide granice i da sve bude dijalog base.... Ali mislim princip je isti :-)(resize sam rijesio tako da cu ovisno o korisnikovoj zelji omogućiti broj željenih pogleda, nadam se....)

Pozdrav
Josip
 
Odgovor na temu

Josipn
Josip Nizetic
Zagreb

Član broj: 101640
Poruke: 11
*.adsl.net.t-com.hr.



Profil

icon Re: Glut => unutar Mfc sa dialogom ili win32 consola20.07.2006. u 23:25 - pre 215 meseci
Opet ja,

ne znam da li ovo spada tu ,ali potrebno mi je.. Mozda je glupo pitanje , ali nikako da mi proradi.....

Htio bih izmjenjivati podateke između tri classe. Kako to napraviti (Static ili nesto drugo...) ? Mislim pokusao sam sa static ali ne mogu definirat izvan classe. Jel postoji posebna classa ?

Ako postoji bolji nacin, bio bih jako zahvalan.......


Pozdrav
Josip
 
Odgovor na temu

[es] :: 3D programiranje :: Glut => unutar Mfc sa dialogom ili win32 consola

[ Pregleda: 2952 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.