játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5471
FZoli:    4892
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2525

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2194
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [85] [90] [95] > 100 < [105] [110] [115] [120] [125] [130] [135] [140] [142]
WToma - Szerkesztő | 635 hsz       Online status #65007   2007.07.31 04:17 GMT+1 óra  
A másodikra: virtuális tagfüggvényt csak a konstruktor lefutása után lehet használni, mert csak akkor állítódik be a virtuális fvtábla.
Az elsőre annyi tippem lett volna, hogy nem pointeren keresztül hívod, de aztán láttam hogy a szerkben mit írtál.

Szerk: találtam egy forrást is, mivel tudom hogy te C#-ből érkeztél: "C++ constructs objects from base to derived, so when the base constructor is executing the object is effectively a base object, and virtual method calls are routed to the base class implementation. By contrast, in .NET the derived constructor is executed first, which means the object is always a derived object and virtual method calls are always routed to the derived implementation." (http://www.andymcm.com/csharpfaq.htm#3.9)
Ez nem bug, hanem feature!
http://sohivatal.uw.hu
   
Orphy - Törzstag | 1893 hsz       Online status #64996   2007.07.31 03:42 GMT+1 óra  
Még 1 nagy gond...

Kód:
cGameApp(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd): cApplicationBase(hInstance,hPrevInstance,lpCmdLine,nShowCmd)
{
InitApp();
}


Itt az InitApp() nem fut le, amikor az osztályt példányosítom... Kidebugoltam...
Valahogyan nagyon furán működnek itt ezek a függvény override-ok...

Tud valaki segíteni?
   
Orphy - Törzstag | 1893 hsz       Online status #64973   2007.07.30 23:26 GMT+1 óra  
Nah, nálam is egy kérdés...

Szeretnék felépíteni egy event-láncot:

pl a grafikus objektum érzékeli hogy elveszítette az eszközt, ezért az engine mélyéről küld egy OnDeviceLost üzit, ami aztán keresztülmenne az alkalmazás bázis osztályán, és végül maga az app kapná meg.

ez a gyakorlatban nálam így néz ki:

Kód:
class cGFXEventHandler
{
public:
virtual void OnGFX_CreateDevice(){};
virtual void OnGFX_DestroyDevice(){};
virtual void OnGFX_LostDevice(){};
virtual void OnGFX_ResetDevice(){};
virtual void OnGFX_Update(){};
virtual void OnGFX_Render(){};
};


Az alkalmazás bázisának több őse van, az egyik a fenti osztály.
A fenti függvények itt is megvannak.

Kód:
virtual void OnGFX_CreateDevice(){};
virtual void OnGFX_DestroyDevice(){};
virtual void OnGFX_LostDevice(){};
virtual void OnGFX_Render(){};
virtual void OnGFX_ResetDevice(){};
virtual void OnGFX_Update(){};



Végül magában az alkalmazás osztályban is definiálva vannak az osztályok (az osztály az alkalmazás bázisból származik), és itt van implementálva minden amit a különböző események hatására tenni kell.

Az a gond, hogy érdekesen viselkedik.
Egészen pontosan nem kap meg minden eseményt...

Az engine osztályál még látom, hogy meghívja az alkalmazás-bázis megfelelő függvényét - ami pl a Render() esetében szépen végig is megy, de pl DeviceLost-nál azt látom, hogy az alkalmazás-bázisban levő, üres fv hívódik, és nem jut tovább magára az alkalmazásra, holott elviekben teljesen ugyanúgy működik, mint a Render()...

Van valakinek valami ötlete, hogy mi lehet a baj?

Szerk:
Az alkalmazás-bázis megfelelő függvényét az Engine hívja meg, egy alkalmazás-bázis típusú pointeren keresztül. Az egyik függvény esetében csak az alkalmazásban levő kód, a másik esetében pedig csak az alkalmazás-bázisban levő üres függvénytörzs fut, holott ugyanúgy működnek, ugyanúgy lettek hívva, stb.
   
gaborlabor - Moderátor | 4449 hsz       Online status #64965   2007.07.30 15:53 GMT+1 óra  
Idézet
TheProGamer :
Idézet
gaborlabor :
öö..izé... mi az az engine movie?


Az engine-el készült videók, nincsenek videóként előre felvéve hanem real-time "történnek meg" (lényegében egy halom script, animáció és hang).
Pl.: Doom3 videói, GTA3+ részek átkötő videói, HL2-ben a kivetítők (általában Dr Breen-el) stb.


köszi köszi, így már vágom, csak nem tudtam, hogy azokat engine movie-nak nevezik.
hmm most veszem csak észre, hogy az "engine movie" milyen beszédes elnevezés valójában

   
Joga - Törzstag | 1791 hsz       Online status #64962   2007.07.30 15:47 GMT+1 óra  
Idézet
TheProGamer :
Idézet
gaborlabor :
öö..izé... mi az az engine movie?


Az engine-el készült videók, nincsenek videóként előre felvéve hanem real-time "történnek meg" (lényegében egy halom script, animáció és hang).
Pl.oom3 videói, GTA3+ részek átkötő videói, HL2-ben a kivetítők (általában Dr Breen-el) stb.

jedi Knight 2
(ಠ ›ಠ) Stewie!

   
TPG - Tag | 3402 hsz       Online status #64961   2007.07.30 15:46 GMT+1 óra  
Idézet
gaborlabor :
öö..izé... mi az az engine movie?


Az engine-el készült videók, nincsenek videóként előre felvéve hanem real-time "történnek meg" (lényegében egy halom script, animáció és hang).
Pl.: Doom3 videói, GTA3+ részek átkötő videói, HL2-ben a kivetítők (általában Dr Breen-el) stb.
Reality is almost always wrong. - House

   
gaborlabor - Moderátor | 4449 hsz       Online status #64960   2007.07.30 15:43 GMT+1 óra  
Idézet
TheProGamer :
[...]
Ha valaki talál ingyenes videó lejátszó/dekódoló lib-et C++ hoz akkor az ne habozzon szólni mert engem is érdekelne a dolog (valamivel meg kell oldani a videólogókat ).


AVIFile
http://avifile.sourceforge.net/
crossplatformnak tűnik
Ott vannak leírások is, de OGL-hez ott van NeHe cikke is:
http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=35
(bár szerintem nem lehet túl nehéz átírni DX-esre)

   
gaborlabor - Moderátor | 4449 hsz       Online status #64956   2007.07.30 15:31 GMT+1 óra  
öö..izé... mi az az engine movie?

   
TPG - Tag | 3402 hsz       Online status #64955   2007.07.30 15:27 GMT+1 óra  
Idézet
beast :
Idézet
MaximumViolence :
ellenjavalltakkor mit javasol a jóisten DShow helyett?


Engine movie-k.


Mondjuk egy ideig meg lehet így is oldani (lásd HL2 kivetítői Dr Breen-el).


Ha valaki talál ingyenes videó lejátszó/dekódoló lib-et C++ hoz akkor az ne habozzon szólni mert engem is érdekelne a dolog (valamivel meg kell oldani a videólogókat ).
Reality is almost always wrong. - House

   
beast - Törzstag | 1241 hsz       Online status #64952   2007.07.30 15:13 GMT+1 óra  
Idézet
MaximumViolence :
ellenjavalltakkor mit javasol a jóisten DShow helyett?


Engine movie-k.

   
WToma - Szerkesztő | 635 hsz       Online status #64947   2007.07.30 15:04 GMT+1 óra  
Azért most nagyon tolják a Vistát + DX10-et + új fícsöröket... és eléggé agresszívan. emlékeim szerint a 9x-XP váltás nem volt ekkora trauma. (vagy csak az idő szépít?)
Ez nem bug, hanem feature!
http://sohivatal.uw.hu
   
TPG - Tag | 3402 hsz       Online status #64942   2007.07.30 14:55 GMT+1 óra  
Idézet
MaximumViolence :
ellenjavalltakkor mit javasol a jóisten DShow helyett?


Tudtommal jelenleg semmit. Nem kell videót lejátszani és kész. A Vista-ban van helyette a Microsoft Media Foundation, az XP meg gondolom le van tojva.
Reality is almost always wrong. - House

   
MaximumViolence - Törzstag | 1020 hsz       Online status #64922   2007.07.30 14:32 GMT+1 óra  
ellenjavalltakkor mit javasol a jóisten DShow helyett?
Ez egy reszeg post...

   
Swinkx - Törzstag | 106 hsz       Online status #64896   2007.07.30 10:25 GMT+1 óra  
Idézet
TheProGamer :
Emlékeim szerint még létezik de már a franc sem tudja mióta a Platform SDK része (és nem a DXSDK-é) és kb azóta ellenjavallt az MS által a használata.


2005.április...

   
TPG - Tag | 3402 hsz       Online status #64888   2007.07.30 07:59 GMT+1 óra  
Idézet
kuzanth :
A DirectShow még él?...Azt hittem, hogy már kb augusztus óta deprecated...Vagy az az mdx-es DirectShow ...


Emlékeim szerint még létezik de már a franc sem tudja mióta a Platform SDK része (és nem a DXSDK-é) és kb azóta ellenjavallt az MS által a használata.
Reality is almost always wrong. - House

   
MaximumViolence - Törzstag | 1020 hsz       Online status #64876   2007.07.30 05:39 GMT+1 óra  
Idézet
kuzanth :
A DirectShow még él?...Azt hittem, hogy már kb augusztus óta deprecated...Vagy az az mdx-es DirectShow ...


hát azt nemtom,én natívan kódolok
Idézet
gaborlabor :
Hééé, ne térítsd el, simán lehet, hogy OGL-es!


megverekszünk érte?

Szerk.:666 hsz
Ez egy reszeg post...

   
pataiadam - Tag | 3 hsz       Online status #64875   2007.07.30 05:18 GMT+1 óra  
Megnézem mindkettőt de szerintem a DirectShownál maradok de persze megnézem az opent is.

A válaszokat köszönöm
   
Kuz - Törzstag | 4455 hsz       Online status #64869   2007.07.30 04:48 GMT+1 óra  
A DirectShow még él?...Azt hittem, hogy már kb augusztus óta deprecated...Vagy az az mdx-es DirectShow ...
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
gaborlabor - Moderátor | 4449 hsz       Online status #64866   2007.07.30 04:44 GMT+1 óra  
Hééé, ne térítsd el, simán lehet, hogy OGL-es!
És igen, meg lehet csinálni, OGL-lel is!
DE ennek semmi köze a Dev-C++hoz, az csak egy IDE (fejlesztőkörnyezet).
Ha OpenGL-t használsz, akkor
http://nehe.gamedev.net/
és ott keress rá, van egy tutorial ami pontosan avi fájlok betöltéséről és lejátszásáról szól.
Ha DX-et használsz, akkor az van ami MaximumViolence írt.

   
MaximumViolence - Törzstag | 1020 hsz       Online status #64864   2007.07.30 04:33 GMT+1 óra  
Ha elkezdesz játékot fejleszteni,előbb-utóbb össze fogsz futni a DirectX SDK-val,aminek egyik "darabja" a DirectShow,az pont erre van kitalálvaitt a portálon találsz is néhány DX-es tutorialt DevCpp alá
Ez egy reszeg post...

   
pataiadam - Tag | 3 hsz       Online status #64863   2007.07.30 04:23 GMT+1 óra  
Egyet viszont kérdeznék (később többet is).

Azt meglehet DevC++-ban csinálni, hogy egy .avi fájlt beillesztünk és lejátsza.

Pontosabban:

Van egy animáció készítő progim...Azzal készítek .avi-ban egy animációt. ( D:/film.avi ) Ezután mondjuk, hogy a játékot kijátszottam és bejönne ez az animáció ami a játék sztoriját lezárja. Tehát meglehet csinálni azt hogy egy animációt a játékomba beillesszek, mondjuk az elérési utján??? Vagy valahogy?DevC++

köszönöm
   
pataiadam - Tag | 3 hsz       Online status #64862   2007.07.30 04:10 GMT+1 óra  
HI
Új tag vagyok. Most keztem tanúlni a C++ nyelvet. Előte tanúltam a QBasic, Html és Pascal nyelvet, de csak a QBasic ment jól. Most egy kicsit nehezebbe vágtam a fejszét... Remélem jót választottam... Az alapokat már tudom (hello world, int, if, else...) és most találtam egy honlapot ahól 2D-s játékfejlesztésről van szó DevC++-ban. Tehát mostmár áttértem a játékfejlesztésre... Remélem hamarosan (6-8 hónap) ott lesz a garázsban az egyik játékom
   
gaborlabor - Moderátor | 4449 hsz       Online status #64850   2007.07.29 15:37 GMT+1 óra  
Ezt írtam be a googleba:
Visual Studio Express Edition CD image

Első találat


   
Kuz - Törzstag | 4455 hsz       Online status #64847   2007.07.29 15:28 GMT+1 óra  
Idézet
TheProGamer :
Idézet
feamatar :
köszi a tippet, leszedtem már csak az a gond hogy elkezd telepíteni és megáll, annyit éír ki hogy
...


Ne a netes telepítőt szedd le hanem a CD image-t, a netes nekem sem működött.


És azt hol is kell keresni? Dobj egy linket pls, mert nekem sem megy a letöltött exe, ezt az image-et meg nem lelem !
A memóriám már nem a régi. És ráadásul még a memóriám sem a régi...
Az élet attól szép, hogy bármi megtörténhet. És attól szar, hogy meg is történik...
Ha az egyik szinkronúszó megfullad, mit csinál a többi???

   
beast - Törzstag | 1241 hsz       Online status #64845   2007.07.29 14:41 GMT+1 óra  
Megesik az ilyen mással is.

   
g_imi - Tag | 236 hsz       Online status #64844   2007.07.29 14:01 GMT+1 óra  
jajj bocsánat
Most nézem h 1 oltári nagy baromságot írtam!!!
Nem példányosítottam.
Mégegyszer elnézést!

   
g_imi - Tag | 236 hsz       Online status #64843   2007.07.29 13:56 GMT+1 óra  
Helló!
Nekem az lenne a problémám, hogy code::blocks-ban írok 1 egyszerű osztály öröklődéses progit, de sajnos nem fordul le.
A program a következő:
Kód:
class A{
public:
    int a;
};
class B:public A{
};

int main()
{
      B.a=10;

return 0;
}


A lényeg h nem érem el "B"-n keresztül "A" "a" adattagját.
Elvileg az öröklődés folyamán "B" is rendelkezik "a"-val nem?
Biztos én rontottam el valamit.
Tudnátok segíteni?
A neten nem találtam semmit sem rólla.

   
Adacs - Törzstag | 706 hsz       Online status #64773   2007.07.28 14:21 GMT+1 óra  
C:\Documents and Settings\user\Dokumentumok\film\irrlicht-1.3.1\examples\myGame\Makefile.win [Build Error] ["Brain] Error 1

Ezt írja ki a Dev-Cpp fordításnál és nem is indítja el és nem tudom hogy mi a baja...

ha csinálok benne hibát akkor ezt írja ki a másik helyet:

C:\Documents and Settings\user\Dokumentumok\film\irrlicht-1.3.1\examples\myGame\Makefile.win [Build Error] [obj/main.o] Error 1
Mosolyogj! A holnap rosszabb lesz a mánál. Arthur Bloch

   
feamatar - Tag | 11 hsz       Online status #64769   2007.07.28 14:00 GMT+1 óra  
nem volt türelmem úgyhogy még egy kicsit próbálkozom, megnézem mit tudok kezdeni platform sdkval,
köszi a segítséget

   
TPG - Tag | 3402 hsz       Online status #64765   2007.07.28 13:52 GMT+1 óra  
Platform SDK kell először, ettől még a DX-es próbléma nem múlik el de az ablakok legalább menni fognak.
Reality is almost always wrong. - House

   
feamatar - Tag | 11 hsz       Online status #64763   2007.07.28 13:38 GMT+1 óra  
végül is fut az Express Edition, de még kevésbé működik a projectem mint eddig
először kidobta fordításkor ugyanazt a hibát mint eddig. februári sdkm van.
a gond az, hogy az SDK súgója is LPDIRECTINPUT8 at emleget típusnak, és valóban a dinput.h ban is az van, DE ha a végére nem írok 8ast akkor nem ez lesz a hiba hanem más(történetesen mostmár az eddig működő windows alapom se fordul le )
és ha megnézem a befordított forrást ott már hiába keresek, egyszerűen eltűnik a defínícó végéről a 8ast
na de mára eleget idegeskedtem emiatt
majd holanp tovább próbálkozok

valaki nem tudja mit szúrhatok el???
nagyon felhúztam már magam rajta(így még expressbe jelen pillanatban egy sima ablakot se tudok létrehozni )

   
feamatar - Tag | 11 hsz       Online status #64724   2007.07.28 09:27 GMT+1 óra  
köszi, közben annyira sikerült rájönnöm hogy a NOD belekötött a telepítésbe... pedig áltabán csak a rohadt nagy exekkel szokott engem szívatni...

   
TPG - Tag | 3402 hsz       Online status #64719   2007.07.28 09:09 GMT+1 óra  
Idézet
feamatar :
köszi a tippet, leszedtem már csak az a gond hogy elkezd telepíteni és megáll, annyit éír ki hogy
setup is loading install components
it will takes one or two minutes (vagy valami ilyesmit)
és onnantól kezdve kész, eddig 20 percet volt türelmem max várni
és az a gáz hogy feladatkezelővel sem tudom innetől lelőni marad a restart


Ne a netes telepítőt szedd le hanem a CD image-t, a netes nekem sem működött.
Reality is almost always wrong. - House

   
WToma - Szerkesztő | 635 hsz       Online status #64718   2007.07.28 09:09 GMT+1 óra  
Valszleg netes telepítő, az meg elég optimistán szokott hozzáállni a dologhoz Ha egyetemista vagy, akkor letöltheted Campusból is, egyetemi szerverekről általában gyorsabb (ott ráadásul nem csak az express van)
Ez nem bug, hanem feature!
http://sohivatal.uw.hu
   
feamatar - Tag | 11 hsz       Online status #64714   2007.07.28 09:04 GMT+1 óra  
köszi a tippet, leszedtem már csak az a gond hogy elkezd telepíteni és megáll, annyit éír ki hogy
setup is loading install components
it will takes one or two minutes (vagy valami ilyesmit)
és onnantól kezdve kész, eddig 20 percet volt türelmem max várni
és az a gáz hogy feladatkezelővel sem tudom innetől lelőni marad a restart

   
TPG - Tag | 3402 hsz       Online status #64713   2007.07.28 09:01 GMT+1 óra  
Idézet
feamatar :
Hi!

Még most ismerkedek a DXel, de van egy kis progblémám fordító részéről.
Szóval Visual Studio 6.0át használok, és a következő hibát írja ki fordításnál:

e:\programozás\vc6_dx9summer2003\34_dxdirectinput\dxdirectinput.cpp(152) : error C2146: syntax error : missing ';' before identifier 'myDirectInputPtr'
e:\programozás\vc6_dx9summer2003\34_dxdirectinput\dxdirectinput.cpp(152) : error C2501: 'LPDIRECTINPUT8' : missing storage-class or type specifiers
e:\programozás\vc6_dx9summer2003\34_dxdirectinput\dxdirectinput.cpp(152) : fatal error C1004: unexpected end of file found

a gondom az, hogy ezt csinálja a tutorialnál is( Nyisztor Károly féle könyvből tanulom a DXet) tehát a kódnak jónak kell lennie(és ha jól értem a hibát arról van szó hogy nem találja a LPDIRECTINPUT8 definícióját). includeolva vannak a szükséges headerek(dinput.h) illetve pragma commenttelve a dinput8.lib
Hasonlóan hibaüzenetet ír ki amikor a D3DXCreateFontot akartam használni egy másik példánál.
Pls help!!!!!!


Melyik SDK verzió van fent? Mert laza 4 éve nem adtak ki VS6.0 kompatibilis verziót.
Tipp: töltsd le a VS2005 EE-t, tök ingyen van és jobb mint a VS6.0.
Reality is almost always wrong. - House

   
feamatar - Tag | 11 hsz       Online status #64708   2007.07.28 08:53 GMT+1 óra  
Hi!

Még most ismerkedek a DXel, de van egy kis progblémám fordító részéről.
Szóval Visual Studio 6.0át használok, és a következő hibát írja ki fordításnál:

e:\programozás\vc6_dx9summer2003\34_dxdirectinput\dxdirectinput.cpp(152) : error C2146: syntax error : missing ';' before identifier 'myDirectInputPtr'
e:\programozás\vc6_dx9summer2003\34_dxdirectinput\dxdirectinput.cpp(152) : error C2501: 'LPDIRECTINPUT8' : missing storage-class or type specifiers
e:\programozás\vc6_dx9summer2003\34_dxdirectinput\dxdirectinput.cpp(152) : fatal error C1004: unexpected end of file found

a gondom az, hogy ezt csinálja a tutorialnál is( Nyisztor Károly féle könyvből tanulom a DXet) tehát a kódnak jónak kell lennie(és ha jól értem a hibát arról van szó hogy nem találja a LPDIRECTINPUT8 definícióját). includeolva vannak a szükséges headerek(dinput.h) illetve pragma commenttelve a dinput8.lib
Hasonlóan hibaüzenetet ír ki amikor a D3DXCreateFontot akartam használni egy másik példánál.
Pls help!!!!!!

   
kiskami - Tag | 265 hsz       Online status #64635   2007.07.28 00:36 GMT+1 óra  
Ingyenes projektbe ingyenes, egyébként fizetős. Mondjuk fizetősben sem vészes (100$
(guglin a "game networking library" keresésre az első tízben szerintem lesz olyan, ami megfelel)
[Silent Vertigo] { Solarah }
http://www.silentvertigo.hu
   
gaborlabor - Moderátor | 4449 hsz       Online status #64615   2007.07.27 12:45 GMT+1 óra  
Nm.
Hát azt sajnos nem tudom, én ezt eddig nem is ismertem, amíg a Solarah segédeszközeinél meg nem láttam
De a hivatalos oldalon biztos le vannak írva a használatának a feltételei.

   
Adacs - Törzstag | 706 hsz       Online status #64613   2007.07.27 12:36 GMT+1 óra  
Thx. Gondolom amíg nem használom pénzszerzésre addig ingyen használhatom.
Mosolyogj! A holnap rosszabb lesz a mánál. Arthur Bloch

   
gaborlabor - Moderátor | 4449 hsz       Online status #64611   2007.07.27 12:06 GMT+1 óra  
Adacs - Törzstag | 706 hsz       Online status #64609   2007.07.27 11:51 GMT+1 óra  
Tudtok valami jó dll-t amivel LAN-ba vagy neten keresztül kapcsolatot érhetek el? Lehetőleg olyat amit nem tílt le a tűzfal/router (főleg router)
Mosolyogj! A holnap rosszabb lesz a mánál. Arthur Bloch

   
WToma - Szerkesztő | 635 hsz       Online status #64605   2007.07.27 10:58 GMT+1 óra  
A függvényhívásoknak jó esetben minimális overheadje van, de azért vigyázni kell, mert pl virtuális fv-nél már hosszabb ideig tart.
Ez nem bug, hanem feature!
http://sohivatal.uw.hu
   
gaborlabor - Moderátor | 4449 hsz       Online status #64588   2007.07.27 09:57 GMT+1 óra  
Szerintem -ha a C-ből indulok ki- nagyon minimális, szinte észrevehetetlen. Illetve szvsz a paraméterek számától és az átadás módjától függ, azaz, hogy hány bájtot kell átmásolgatni a stackbe.
De glut esetén a renderelő fgv kötelezően void xy(void) típusú lehet, szóval ott még az sem lassíthat.
Szerintem ez a legeslegutolsó dolog ami miatt egy engine lassú lesz - DE lehet, hogy nagyot tévedek...

   
beast - Törzstag | 1241 hsz       Online status #64586   2007.07.27 09:53 GMT+1 óra  
Én is igy oldottam meg az engine-m (khm) render részét, de ezzel a megoldással van sebesség csökenés? Szóval a sok függvényhivás nem lassít? (nem glut-ot használok, csak pure win32)

   
gaborlabor - Moderátor | 4449 hsz       Online status #64580   2007.07.27 08:29 GMT+1 óra  
köszi szépen a magyarázatot!

azt hiszem, így már érthetőbb, mit jelent ott a static.
akkor megpróbálom majd az általad használt módszerrel, remélem összejön.
köszi mégegyszer!

   
WToma - Szerkesztő | 635 hsz       Online status #64579   2007.07.27 07:52 GMT+1 óra  
1. Megy az &-del is. (ha jól emléxem lehet nélküle is, meg vele is. ha zárójel nélkül leírjuk a fv nevét, azt is a "címe"-ként értelmezi a fordító)
2. a static egy osztályon belül azt jelenti, hogy az adott függvény (vagy adattag) nem az objektumhoz, hanem az osztályhoz tartozik. Legkönnyebb úgy elképzelni, mint olyan függvényt/adattagot, ami az osztály névterében van, de ezen kívül semmi köze hozzá Pl:
Kód:
class foo {

public:

   static int static_foo;
   int normal_foo;
   static void static_func() {cout<<static_foo;}
   void normal_func() {cout<<normal_foo;}
};
...
//pl így írhatod:
foo a,b;
a.normal_foo=3;normal_func();
b.normal_foo=5;normal_func();   //eddig gondolom nyilvánvaló h mit fog kiírni
//de itt jön a poén
a.static_foo=42;b.static_func();    //=>>42 tehát static_foo és static_func minden foo objektumban közös, ezért így is lehet írni:
foo::static_foo=42;foo::static_func();


A glut-nál ebbe én is belefutottam, ott a következő bűvészkedést csináltam: a callback fv-eket megírtam statikus függvénynek, valamint az osztály tartalmazott egy, az adott példányra mutató (szintén statikus) adattagot. A statikus callback fv-ek pedig meghívták a nem-statikus társaikat. Amúgy nemtom h erre mi a szép megoldás
Ez nem bug, hanem feature!
http://sohivatal.uw.hu
   
gaborlabor - Moderátor | 4449 hsz       Online status #64565   2007.07.27 04:28 GMT+1 óra  
köszi a választ!


azt írtad, hogy a függvény címe: &Foo;
ez érdekes... mármint, biztos vagy benne, hogy ez a függvény címe?
csak azért, mert a C könyvemben azt írják, hogy ha a függvény nevét paraméterezés nélkül használjuk, akkor AZ a függvény címe, magyarul nem kell a 'címe' operátort használni.
pl.:
Kód:
double sum(double a, double b)
{
    return a+b;
}

void main(void)
{
    double szam1=5., szam2=7., osszeg = 0.;
    double (*ptr)(double, double);
    ptr = sum; // !! nincs & és mégis felveszi a címét !!
    osszeg = ptr(szam1, szam2);
    // osszeg 12.0 lett
}


más:
Az, hogy egy függvény statikus, az mit jelent? A tárolási osztályra gondolsz?
Azt tudom, hogy C-ben a függvények alapból az extern tárolási osztályban vannak, a static kulcsszó a láthatóságukat csökkenti az adott modulra. C++ban ez nem tudom, hogy megy, de azt tudom, hogy a C++os extern nem ugyanaz mint a C-s.
Az osztályokban lévő függvények milyen tárolási osztályban vannak alapból? És jelent az valamit, ha azt a függvényt helyben fejtem ki (inline lesz), vagy annak csak a működés szempontjából van hatása?
Huhh, sokat kérdezek.

A lényeg, hogy azt szeretném megcsinálni, hogy legyen egy osztály, ami elvégzi a program indításakor a GLUT inicializálását.
Tehát a main fv csak ennyi lenne:
Kód:
int main(int argc, char **argv)
{
    CApplication Application(argc, argv);
    Application.Run();
    return 0;
}


Csakhogy a GLUT úgy tud rajzolni, hogy át kell neki adni a rajzoló függvény címét.
A rajzoló függvényt tartalmazó objektumot az Application objektum tartalmazza.
Ezért a rajzoló objektumba szeretnék olyan metódust írni ami visszaadja a rajzoló függvény címét, hogy aztán azt az Application objektum átadhassa a GLUT-nak.

Ez megoldható valahogy, vagy teljesen rossz úton járok?

   
Matzi - Szerkesztő | 2525 hsz       Online status #64564   2007.07.27 04:25 GMT+1 óra  
Meg az úgy is, pont olvastam valamikor, csak a pontos módját felejtettem el. A statikust valóban egyszerűbb, mert az egy sima függvény, csak más névtérben van, míg a nem statikus kap egy osztálypointert automatikusan.
Azthiszem valami olyasmi kell, hogy
Kód:
void(*osztaly::fvnev)(void);

vagy valami hasonló, de ugyanúgy lehet, ahogyan tagraváltozóra mutató pointert is valahogy így lehet visszaadni. Szóval ha így nem megy, akkor nézz körül, mert tuti meg lehet csinálni.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
WToma - Szerkesztő | 635 hsz       Online status #64563   2007.07.27 04:13 GMT+1 óra  
Egy normál függvény címe:
Kód:
void Foo();
cím => &Foo;

De osztály tagfüggvényének csak akkor kérdezhető le a címe, ha a függvény statikus. Tehát ha pl. callbacket akarsz csinálni, akkor az nem megy, hogy a nem-statikus tgfüggvény címét lekérdezed.
Ez nem bug, hanem feature!
http://sohivatal.uw.hu
   
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [85] [90] [95] > 100 < [105] [110] [115] [120] [125] [130] [135] [140] [142]