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

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2198
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
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] [143]
Asylum - Törzstag | 5511 hsz       Online status #129613   2010.03.24 09:12 GMT+1 óra  
Ha minősítve van az osztály nevével akkor nem. Én inkább arra gondolok, hogy valahol van egy ilyen:

Kód:
A a;
a.instances[0] = 5; // error 'instances' is private
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
bit.0x8000 - Törzstag | 574 hsz       Online status #129611   2010.03.24 03:47 GMT+1 óra  
Idézet
Asylum :
Biztos vagy te benne, hogy arra dobja a hibaüzenetet? Nem azért dobja mert valahol hivatkozol rá? (és nem az osztályon belül).



Végül is a C++ .cpp fájljaiban "osztályon kívüli" hivatkozások vannak, nem?
(Úgy értem, minden tag (member) elé ki kell írni az osztály nevét: Nem lehet, hogy emiatt van probléma?)
   
Asylum - Törzstag | 5511 hsz       Online status #129610   2010.03.24 03:14 GMT+1 óra  
Biztos vagy te benne, hogy arra dobja a hibaüzenetet? Nem azért dobja mert valahol hivatkozol rá? (és nem az osztályon belül).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
bit.0x8000 - Törzstag | 574 hsz       Online status #129609   2010.03.24 02:42 GMT+1 óra  
Idézet
Asylum :
Nem az volt az első, és milyen fordítót használsz mert nálam gcc-vel is és vcc-vel is megy.



Úgy értem, én azt próbáltam először, amúgy GCC-t, de nem hiszem, hogy ez számítana...
   
bit.0x8000 - Törzstag | 574 hsz       Online status #129608   2010.03.24 02:33 GMT+1 óra  
Egyébként, ha a header-ben olyat csinálok, hogy:
Kód:
private :
  static const int INSTANCES = 2;
  static MapMenu instances[INSTANCES];


Akkor nem (erre) dob hibaüzenetet.
   
Asylum - Törzstag | 5511 hsz       Online status #129607   2010.03.24 02:30 GMT+1 óra  
Nem az volt az első, és milyen fordítót használsz mert nálam gcc-vel is és vcc-vel is megy.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
bit.0x8000 - Törzstag | 574 hsz       Online status #129606   2010.03.24 02:22 GMT+1 óra  
Idézet
Asylum :
És így?
Kód:
MapMenu MapMenu::instances[MapMenu::INSTANCES];




Ez volt az első változat.
(Amúgy a hibaüzenetből kiderül, hogy nem ez a baja.)

Idézet
Asylum :
Jagged tömbre meg... az átlagos megoldás (de ezt csak függvény törzsében).
Kód:
int masik[] = { 5, 6, 7, 8 };

memcpy(egyik, masik, 4 * sizeof(int));




Ilyen "sátáni" technikákhoz nem akarok fordulni, az OOP keretein belül gondoltam.
   
Asylum - Törzstag | 5511 hsz       Online status #129605   2010.03.24 02:14 GMT+1 óra  
És így?

Kód:
MapMenu MapMenu::instances[MapMenu::INSTANCES];


Jagged tömbre meg... az átlagos megoldás (de ezt csak függvény törzsében).

Kód:
int masik[] = { 5, 6, 7, 8 };

memcpy(egyik, masik, 4 * sizeof(int));
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
bit.0x8000 - Törzstag | 574 hsz       Online status #129604   2010.03.24 02:08 GMT+1 óra  
Idézet
Asylum :
Konstans változó csakis deklarációkor kaphat értéket. (amit te csinálsz az már definíció, konstans változóra értelmetlen).



Más esetekben teljesen jól működik a dolog, itt is "csak" a láthatósággal van gond.
(Ha a header-ben adok neki értéket, akkor is ugyanez a nyomora.)

Idézet
Asylum :
Jagged tömböt ha jól tudom nem lehet ilyennel inicializálni. (mindig az járjon a fejedben, hogy a deklarációkor való kezdőérték adásnál a copy konstruktor fut le).



Az tiszta, hogy jagged tömbnél ezt nem lehet használni, a kérdés inkább arra vonatkozott, hogy mit kéne helyette használni: new-val létrehozni dinamikus tömböket, vagy létrehozni (változóként) több sima tömböt, majd létrehozni egy olyan tömböt, ami ezeket tartalmazza, stb...
   
Asylum - Törzstag | 5511 hsz       Online status #129602   2010.03.24 01:41 GMT+1 óra  
Milyen érdekes bugokat fedezel fel

Konstans változó csakis deklarációkor kaphat értéket. (amit te csinálsz az már definíció, konstans változóra értelmetlen).

Jagged tömböt ha jól tudom nem lehet ilyennel inicializálni. (mindig az járjon a fejedben, hogy a deklarációkor való kezdőérték adásnál a copy konstruktor fut le).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
bit.0x8000 - Törzstag | 574 hsz       Online status #129599   2010.03.24 01:01 GMT+1 óra  
Na, megint sikerült belefutnom két érdekes dologba...

Az egyik:

MapMenu.h
Kód:
private :
  static const int INSTANCES;
  static MapMenu instances[];


MapMenu.cpp
Kód:
const int MapMenu::INSTANCES = 2;
MapMenu MapMenu::instances[INSTANCES];


hiba:
‘const int GraphicsLib::MapMenu::INSTANCES’ is private

A másik egy kérdés: C++-ban hogyan lehet legrövidebben inicializálni egy "jagged" tömböt?
Valami olyasmi kéne, mint a sima tömböknél:
Kód:
int array[] = {1, 2, 3};


szerk: Persze lehet vector vagy bármi más, a lényeg a rövid inicializálás...

Ezt a hozzászólást bit.0x8000 módosította (2010.03.24 01:14 GMT+1 óra, ---)
   
Asylum - Törzstag | 5511 hsz       Online status #129507   2010.03.22 20:56 GMT+1 óra  
Ez upcast.
Érdekes egyébként eddig fel se tünt, hogy ez nem megy. Úgy látszik a ?: operátor mindkét ágának kasztolhatónak kell lenni a másikra.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
bit.0x8000 - Törzstag | 574 hsz       Online status #129501   2010.03.22 19:26 GMT+1 óra  
Idézet
proof88 :
Most lehet hülyeséget írok, de:

Kód:
struct A { };
struct B : A { };
struct C : A { };

A *a;
B *b;
C *c;

a = condition ? (A*)b : (A*)c;




Akkor ketten írtunk hülyeséget, mert én is így oldottam meg.
(Igazából elég az egyiket kasztolni.)

Csak hát szerintem elég randa megoldás "kézzel" downcast-elni objektumokat...

szerk: Vagy ezt upcast-nek hívják?

Ezt a hozzászólást bit.0x8000 módosította (2010.03.22 19:54 GMT+1 óra, ---)
   
proof88 - Törzstag | 530 hsz       Online status #129498   2010.03.22 19:17 GMT+1 óra  
Most lehet hülyeséget írok, de:

Kód:
struct A { };
struct B : A { };
struct C : A { };

A *a;
B *b;
C *c;

a = condition ? (A*)b : (A*)c;
   
bit.0x8000 - Törzstag | 574 hsz       Online status #129494   2010.03.22 18:58 GMT+1 óra  
Az alábbi probléma már több nyelven is előjött, most épp C++-ban. Tehát:
Kód:
double a;
int b;
float c;

a = condition ? b : c;

Ez, nem meglepő módon, működik, hála az implicit cast-nek. Viszont az alábbira hibát dob a fordító:
Kód:
struct A { };
struct B : A { };
struct C : A { };

A *a;
B *b;
C *c;

a = condition ? b : c;

...pedig szerintem ez is "értelmes" eset.

Ennek a működésnek lehet valami oka, vagy egyszerűen csak hiányosság?
   
glezmen - Törzstag | 381 hsz       Online status #129082   2010.03.14 20:14 GMT+1 óra  
Idézet
Seeting :
Létezik valamilyen standard grafikai lib amivel ilyen alap dolgokat lehet rajzolni? kör, négyzet, ilyesmi... 2D



ezeket konnyen megcsinalhatod te is, ha nem sebessegkritikus a cucc akkor egyszeru algoritmusokkal is konnyen leimplementalhato (ha mar eljutottal odaig, hogy pixelenkent tudsz rajzolni a kepernyore)

de kulonfele alakzatokat tudsz rajzolni pl. az SDL_gfx csomaggal, ami nem meglepo modon az SDL-t hasznalja
   
proof88 - Törzstag | 530 hsz       Online status #129074   2010.03.14 19:24 GMT+1 óra  
Seeting: alap gdi32.dll-ben benne vannak ezek, amihez van borland delphiben is .pas header fájl. De elég csak a Windows.pas-t usesolni hozzá.
   
Asylum - Törzstag | 5511 hsz       Online status #129069   2010.03.14 18:51 GMT+1 óra  
Csak egy megjegyzés: ha ilyen compiler warningot kaptok, hogy /GS cannot protect parameters ... akkor az azért lehet mert ki van kapcsolva az optimalizálás (/O2).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Pretender - Törzstag | 2498 hsz       Online status #129065   2010.03.14 17:45 GMT+1 óra  
"és figyelj oda hogy a beállitás UTÁN töröld le" - nyilvan, viszont amikor ugy csinaltam, h set render target, utana torles, azutan occlusion boxok rajzolasa, az ugy szinten nem volt jo. Csak ugy mukodokepes a dolog, ha az occlusionos marhasag utan torlom, majd azutan reset to backbuffer

   
gaborlabor - Moderátor | 4449 hsz       Online status #129063   2010.03.14 17:43 GMT+1 óra  
A glut biztosan nem, hiszen nem is rajzolásra való (de pár dolgot tud pl. utah teapot, gömb, kocka, kúp stb - de 2D-s dolgokat nem).
A GDI jó választás lehet szerintem is.

   
Seeting - Törzstag | 2306 hsz       Online status #129062   2010.03.14 17:39 GMT+1 óra  
És ez megy borland fordítóval is?
   
Asylum - Törzstag | 5511 hsz       Online status #129060   2010.03.14 17:36 GMT+1 óra  
sima GDI is tud szerintem (vagy linux alatt az X).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Seeting - Törzstag | 2306 hsz       Online status #129059   2010.03.14 17:35 GMT+1 óra  
Nekem olyan kell, mint amilyen a pascal-hoz volt. A glut az egy openGL-es cucc, nem akarom ezért belefordítani az ogl-t.
   
Wolfee - Törzstag | 1337 hsz       Online status #129058   2010.03.14 17:33 GMT+1 óra  
glut?
FZoli jóváhagyásával XD

   
Seeting - Törzstag | 2306 hsz       Online status #129057   2010.03.14 17:33 GMT+1 óra  
Létezik valamilyen standard grafikai lib amivel ilyen alap dolgokat lehet rajzolni? kör, négyzet, ilyesmi... 2D
   
Asylum - Törzstag | 5511 hsz       Online status #129048   2010.03.14 17:04 GMT+1 óra  
Egyrészt a backbuffert inkább igy kérd el:

Kód:
LPDIRECT3DSURFACE9 backbuffer = NULL
device->GetRenderTarget(0, &backbuffer);

// cucc

device->SetRenderTarget(0, backbuffer);
// végsö rajz

backbuffer->Release();


Másrészt mindig mikor uj rendertargetet állitasz be érdemes letörölni azt és a zbuffert is (és figyelj oda hogy a beállitás UTÁN töröld le).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Pretender - Törzstag | 2498 hsz       Online status #129036   2010.03.14 16:20 GMT+1 óra  
No kerem szepen. Multkoriban csinaltam az occlusion culling-ot, viszont eszrevettem egy kis bugot. A hajoknal egy-egy boxot rajzolok ki az occlusion teszt resznel. Valahogy igy nez ki pseudo kodban:
Kód:
- set rendertarget (0,nev)
- entities listan vegigmegyunk:
- ha az i-edik entitiy nem latszik, akkor megyunk a kovetkezore a listaban (elozetes vfc teszt)
- a beepitett dx-es algoval szamolom, hogy latszik-e az adott entity, majd fogom es beallitom ezt neki (a lathatosagot)
- reset to backbuffer
- entities lista ismet:
- ha latszik az i-edik entity, kirajzolom a rendes mesht.

Ami a kepen lathato az az urhajo egyik box-a. Fogalmam sincs, hogy hogyan kerult oda, nem is igazan mozog egyutt rendesen a kameraval, szoval eleg bizonytalan volt megtalalni:

set render target egyertelmu.
Kód:
for (DWORD i = 0; i < entities.size(); i++)
{
    //ha mar a vfc azt mondta, hogy nem latszik...
    if (entities[i]->GetOCulled())
        continue;

    occlusion->GetQuery()->Issue(D3DISSUE_BEGIN);

    entities[i]->SetCamera(camera);
    //CSAK a box-okat rajzolom ki
    entities[i]->DrawOcclusion();

    occlusion->GetQuery()->Issue(D3DISSUE_END);

    DWORD pixelsVisible = 0;
    while (occlusion->GetQuery()->GetData((void*)&pixelsVisible, sizeof(DWORD), D3DGETDATA_FLUSH) == S_FALSE);

    //a dx-es mutyur elvegzi helyettem a lenyeget
    if (pixelsVisible == 0)
        entities[i]->SetOCulled(true);
    else
        entities[i]->SetOCulled(false);
}

a reset to back buffer pedig igy nez ki:
Kód:
IDirect3DSurface9* bb;
app->GetDevice()->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &bb);
app->GetDevice()->SetRenderTarget(0, bb);
bb->Release();

Ja meg talan ami meg itt erdekes lehet az a box-ok kirajzolasa:
Kód:
GetGame()->GetDevice()->SetTransform(D3DTS_WORLD, (D3DXMATRIX*)world.m);
GetGame()->GetDevice()->SetTransform(D3DTS_VIEW, (D3DXMATRIX*)camera->GetView().m);
GetGame()->GetDevice()->SetTransform(D3DTS_PROJECTION, (D3DXMATRIX*)camera->GetProjection().m);

occlusionModel->GetMesh()->DrawSubset(0);

Eddig akarmit probaltam mindig ott volt az a kis ize (es mindig a backbuffer szinevel, ezert is vettem eszre alig)
De nem is igazan ertem, hogy ha a render targetbe rajzolom csak ki a boxokat, akkor hogy latszodhat?...

szerk.:
Erdekes: ha az occlusion teszt resz elott es a backbufferre valo reseteles elott tolok egy ilyet, hogy:
Kód:
game->GetDevice()->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(128,128,128), 1.0f, 0.0f);

akkor megszunik a problema. Na most ez nekem eleg is lenne, de megsem.. (na ezt megaszontam' Tudni szeretnem, hogy mi ez a bug

Ezt a hozzászólást Pretender módosította (2010.03.14 16:31 GMT+1 óra, ---)

   
glezmen - Törzstag | 381 hsz       Online status #128938   2010.03.13 12:54 GMT+1 óra  
Idézet
bit.0x8000 :
Idézet
Seeting :
gvim + g++

Tessék. Kész a fejlesztő környezeted



És érdekes módon ebben a környezetben is írtak használható programokat...



en jelen pillanatban is vimben (nem gvim, bar az ugyanaz, olyan meg nincs hogy vim++ ) irom a PACC-ra keszulo jatekomat, meg ugy altalaban mindent (munka, stb)
zsenialis szovegszerkeszto, fenyeveket ver minden masra amit ismerek
buildhez raszoktam a CMake-re, jo kis tool, nem is kell mellejuk mas

MOD: amugy ha 'fullextras' IDE kell, akkor erdemes megnezni a Qt Creatort, egesz jo kis cucc, bele van integralva a Qt designer, meg van vim-modja is, bar sajna teljesen hasznalhatatlan a valodi vimhez kepest

a KDevelop meg borzalom

Ezt a hozzászólást glezmen módosította (2010.03.13 13:06 GMT+1 óra, ---)
   
bit.0x8000 - Törzstag | 574 hsz       Online status #128920   2010.03.13 03:39 GMT+1 óra  
   
Wolfee - Törzstag | 1337 hsz       Online status #128919   2010.03.13 03:07 GMT+1 óra  
hát nem akarlak megbántani, de seet itt jóval öregebb motoros, mint te
FZoli jóváhagyásával XD

   
bit.0x8000 - Törzstag | 574 hsz       Online status #128918   2010.03.13 03:03 GMT+1 óra  
"Pffff. Ezt meg se hallottam.

...

Most elmegyek és hozok egy kis szentelt vizet ellened. XD"

Az öreg motorosokon az sem fog...

Písz
   
Wolfee - Törzstag | 1337 hsz       Online status #128914   2010.03.13 02:53 GMT+1 óra  
btw, mi is vimet és g++ -t használunk renges munkahelyi fejlesztőkörnyezetként. mondjuk amit használunk linux disztrót, abban semmi ablakkezelő nincs,ez is igaz
FZoli jóváhagyásával XD

   
Seeting - Törzstag | 2306 hsz       Online status #128912   2010.03.13 02:36 GMT+1 óra  
Pffff. Ezt meg se hallottam.

...

Most elmegyek és hozok egy kis szentelt vizet ellened. XD
   
bit.0x8000 - Törzstag | 574 hsz       Online status #128911   2010.03.13 02:34 GMT+1 óra  
Idézet
Seeting :
Bizonyítsd be, hogy a GTA IV-et nem ezzel a környezettel írták!



Ha ebben írták volna, akkor jó lenne...
   
Seeting - Törzstag | 2306 hsz       Online status #128910   2010.03.13 02:28 GMT+1 óra  
Bizonyítsd be, hogy a GTA IV-et nem ezzel a környezettel írták!
   
bit.0x8000 - Törzstag | 574 hsz       Online status #128909   2010.03.13 02:15 GMT+1 óra  
Idézet
Seeting :
Kimondta hogy nem? Bizonyítsd be, hogy én nem ezzel dolgozom...



Miért tenném?
   
Seeting - Törzstag | 2306 hsz       Online status #128908   2010.03.13 02:03 GMT+1 óra  
Kimondta hogy nem? Bizonyítsd be, hogy én nem ezzel dolgozom...
   
bit.0x8000 - Törzstag | 574 hsz       Online status #128906   2010.03.13 02:00 GMT+1 óra  
Idézet
Seeting :
gvim + g++

Tessék. Kész a fejlesztő környezeted



És érdekes módon ebben a környezetben is írtak használható programokat...
   
Seeting - Törzstag | 2306 hsz       Online status #128905   2010.03.13 01:50 GMT+1 óra  
gvim + g++

Tessék. Kész a fejlesztő környezeted
   
bit.0x8000 - Törzstag | 574 hsz       Online status #128904   2010.03.13 01:49 GMT+1 óra  
Idézet
MaximumViolence :
ha mar code::blocks,mondjatok mar linuxra egy ertelmes ide-t.code::blocks-nal szebb,jobb letezik?



Vim ?
   
MaximumViolence - Törzstag | 1020 hsz       Online status #128902   2010.03.13 00:46 GMT+1 óra  
az meg szornyubb
Ez egy reszeg post...

   
Asylum - Törzstag | 5511 hsz       Online status #128901   2010.03.13 00:42 GMT+1 óra  
KDevelop
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
MaximumViolence - Törzstag | 1020 hsz       Online status #128898   2010.03.13 00:37 GMT+1 óra  
ha mar code::blocks,mondjatok mar linuxra egy ertelmes ide-t.code::blocks-nal szebb,jobb letezik?
Ez egy reszeg post...

   
Asylum - Törzstag | 5511 hsz       Online status #128893   2010.03.13 00:18 GMT+1 óra  
Nah a megoldás triviálisabb mint a void*.
Azt elfelejtette emliteni a kolléga, hogy code::blocks-ot használ, ami úgylátszik butább mint az átlag és az örökölt template memberre igy kell hivatkozni:

Kód:
this->_x;
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Asylum - Törzstag | 5511 hsz       Online status #128885   2010.03.13 00:08 GMT+1 óra  
Oké de akkor mire dobja a hibát?
Most soronként könyörögjem ki? Vagy gyere msn-re.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Joga - Törzstag | 1791 hsz       Online status #128884   2010.03.13 00:07 GMT+1 óra  
a number mutatójával csak az első paramétert írom ki, amit simán a gettel elérek, mivel már az ősosztályban definiálva van
(ಠ ›ಠ) Stewie!

   
Asylum - Törzstag | 5511 hsz       Online status #128883   2010.03.13 00:05 GMT+1 óra  
Statikus és dinamikus típus apám; dinamikus kötés, polimorfizmus.

A Number-ben hol van definiálva getx() meg gety()? (már ha igy irod ki, egyébként még mindig nem irtad be azt a kódrészletet amire a hibát irja).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Joga - Törzstag | 1791 hsz       Online status #128882   2010.03.13 00:02 GMT+1 óra  
Kód:
Number<int> my_number;
my_number.set( 31415 );

Pair<int> my_pair;
my_pair.setx( 10 );
my_pair.sety( 20 );


Number<int> *numptr = &my_pair;

...
Innentől már csak kiírogatom a különböző értékeket
(ಠ ›ಠ) Stewie!

   
Asylum - Törzstag | 5511 hsz       Online status #128879   2010.03.12 23:41 GMT+1 óra  
Nálam továbbra is tökéletesen müködik.
Legalábbis ez a kód amit most beirtál.

Hogyan példányosítod?
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Joga - Törzstag | 1791 hsz       Online status #128870   2010.03.12 21:07 GMT+1 óra  
jó bocs, na tegyük fel, hogy ott van, rosszul másoltam be, de viszont arra van tipped hogy miért nem megy template-el, ha inttel megy?
(ಠ ›ಠ) Stewie!

   
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] [143]