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

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2193
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] [82]
Asylum - Törzstag | 5468 hsz       Online status #192563   2013.03.20 11:18 GMT+1 óra  
Akkor te nem vagy bocsuletes Azert nem ajanlott ez, mert pl. az uniformoknal intel kartyan kiderult hogy nem 0 tol szamozza hanem valahonnan 15 milliotol (a rohadt anyjat). Szoval erre nem szabad epiteni.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
syam - Törzstag | 1491 hsz       Online status #192556   2013.03.20 10:00 GMT+1 óra  
Én glBindAttribLocation-t használok, hogy ne shadertől függjön melyik attribarrayt kelljen engedélyezni.
alias aalberik
   
Asylum - Törzstag | 5468 hsz       Online status #192554   2013.03.20 09:51 GMT+1 óra  
Ne hasznald. Kerd el ugy ahogy minden bocsuletes programozo csinalja.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Pretender - Törzstag | 2498 hsz       Online status #192553   2013.03.20 09:37 GMT+1 óra  
glBindAttribLocation?
Anno hallottam olyat, hogy ne használja az ember, mert van, ami nem kezeli jól, hanem geteljük le. Ez még mindig áll valamennyire, vagy nyugodtan lehet használni? Neten nem találtam semmi olyat, ami "tiltaná", csak együtt ne használjuk a beépítettekkel (gl_position, ...)

   
versio - Tag | 673 hsz       Online status #192550   2013.03.20 01:37 GMT+1 óra  
teny hogy igy van , foleg az ujabb gpu-kon, de kis polygonokkal foleg deferred pipelineal , meg mondjuk arnyekoknal erezheto a gyorsulas
a jelenlegi enginemnel en sem hasznalok stripet, mivel a per pixel displacemap rohadt lassu, es amugy is lobaszo nagy polygonokat hasznalok
   
Geri - Törzstag | 2193 hsz       Online status #192549   2013.03.20 01:30 GMT+1 óra  
inkább azzal jövök, hogy a renderelés sokkal nagyobb műveletigényű, mint a vertexet kiolvasni a memóriából, így az, hogy mit használsz, szinte eljelentékteleníti a dolgot.

   
versio - Tag | 673 hsz       Online status #192548   2013.03.20 00:54 GMT+1 óra  
neha azert gondolkodhatnal is

listasnal egy polygon eloallitasahoz kell 3 vertex, ezeket be kell olvasni, majd lefuttatni rajtuk a vertex shadert, es utana mehet a raszterizerbe
stripnel, egy vertexet kell beolvasni, es egy vertex shadert kell futtatni , tehat 3-ad akkora memoria savszel igenye van , es 3-ad akkora a szamolasi kapacitas igeny is

persze most johetnel azzal hogy de indexes listet kell hasznalni, csak ott ugye az a baj hogy cachemiss-nel leall ezer orajelre a gpu , had ne szamoljam ki mekkora veszteseg ez
   
Geri - Törzstag | 2193 hsz       Online status #192547   2013.03.20 00:42 GMT+1 óra  
már a voodoo1nek is kb mindegy volt, pedig az csak kb 600 mbyte/sec

   
versio - Tag | 673 hsz       Online status #192546   2013.03.20 00:38 GMT+1 óra  
tablan, telefonon ez nem igaz
   
Geri - Törzstag | 2193 hsz       Online status #192545   2013.03.20 00:33 GMT+1 óra  
igazából rohadtul mindegy, mert a gpu vertexxel való molyolása lassabb, mint ahogy a memória nyomatja az adatokat befele.

   
versio - Tag | 673 hsz       Online status #192544   2013.03.20 00:20 GMT+1 óra  
kemenyen optimalizalni kell a vertexfolyamot, mert eleg nagy savszeligenye van , persze nem az ezer polygonos lofaszok fogjak megakasztani a gpu-t
az nvidia trsrtip eleg gyenge , az enym 30%-al kevesebb vertexbol epiti fel az objectet, persze nem art ha mar modellezes strip baratian keszul , a haromszogeket el kell felejteni
   
Geri - Törzstag | 2193 hsz       Online status #192543   2013.03.19 23:33 GMT+1 óra  
vers: polygononként akár 96 bájtot is elpocsékolsz, ha van uv és normál is

   
Asylum - Törzstag | 5468 hsz       Online status #192540   2013.03.19 22:07 GMT+1 óra  
Idézet
versio :
10 mill poly = 30 millio vertex



Gondold át még egyszer.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Pretender - Törzstag | 2498 hsz       Online status #192537   2013.03.19 19:42 GMT+1 óra  
Ilyen hülyeségek vannak Ogl 3.0+, hogy a glBindTexture(..., 0) az deprecated. Sőt, az összes olyan (kivéve a glUseProgram(0) ), aminek olyan id-t adsz át, amit nem OpenGL-el generáltattál...

   
versio - Tag | 673 hsz       Online status #192531   2013.03.19 18:07 GMT+1 óra  
10 millio polygon listas savszelesseg igenye:

10 mill poly = 30 millio vertex

1 vertex kb 20 byte akkor 30 mill * 20 byte = 600 MB

60 fps mellett 36 GB/sec
   
Geri - Törzstag | 2193 hsz       Online status #192527   2013.03.19 15:53 GMT+1 óra  
mindenesetre nem ezen fog múlani a szoftvered sikere.

   
Pretender - Törzstag | 2498 hsz       Online status #192518   2013.03.19 08:25 GMT+1 óra  
Akkor n tapasztalat megállapítása után kijelenthetjük, hogy a triangle list gyorsabb Köszi

   
Geri - Törzstag | 2193 hsz       Online status #192513   2013.03.18 22:11 GMT+1 óra  
az én régi enginemben a strip mindig lassabb volt, mint a sima triangle

   
Pretender - Törzstag | 2498 hsz       Online status #192510   2013.03.18 21:33 GMT+1 óra  
Én konkrétan modellbetöltésre és rajzolásra gondoltam (általános esetben).

   
Asylum - Törzstag | 5468 hsz       Online status #192507   2013.03.18 21:17 GMT+1 óra  
Speciális esetekben van értelme használni (pl. a diplomamunkámban sokkal egyszerübb és hatékonyabb volt a strip). Egyébként meg akkor amikor kézenfekvöbb és nem érdekes a teljesitmény.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Pretender - Törzstag | 2498 hsz       Online status #192504   2013.03.18 20:45 GMT+1 óra  
Idézet
syam :
Idézet
Pretender :
Na, szuper, a listet még könnyebb is legyártani Köszi!



Én kétfélét ismerek: Forsyth ill. a nvtristrip. Te mit használsz?


Még semmilyet, azért érdeklődtem, hogy van-e értelme egyáltalán megcsinálni egyet

   
versio - Tag | 673 hsz       Online status #192503   2013.03.18 20:22 GMT+1 óra  
a strip mar azert nem gyorsabb , mert a driver feltolti a gpu memoriaba elotte, viszont a kvarcjatekokon ahol nincs gpu memoria a strip 3-szor gyorsabb

a list merete 3-szor nagyobb, ha nem indexes
ha indexes akkor meg ezer orajeles kesleltetest okoz egy cache miss
   
syam - Törzstag | 1491 hsz       Online status #192501   2013.03.18 19:20 GMT+1 óra  
Idézet
Pretender :
Na, szuper, a listet még könnyebb is legyártani Köszi!



Én kétfélét ismerek: Forsyth ill. a nvtristrip. Te mit használsz?
alias aalberik
   
Pretender - Törzstag | 2498 hsz       Online status #192500   2013.03.18 18:40 GMT+1 óra  
Na, szuper, a listet még könnyebb is legyártani Köszi!

   
syam - Törzstag | 1491 hsz       Online status #192497   2013.03.18 18:20 GMT+1 óra  
A strip régen volt gyorsabb. Én azt mértem, h GF8 óta a opt. list gyorsabb. Én már stripet nem gyártok.
alias aalberik
   
Pretender - Törzstag | 2498 hsz       Online status #192493   2013.03.18 18:01 GMT+1 óra  
Az OpenGL hogy kezeli a tirangle stripet? Anno hallottam olyat, hogy hiába kevesebb index kell, meg blabla, mégsem lesz gyorsabb, sőt, lassabb a kirajzolás. Ez mennyire igaz? Érdemes triangle stripként betölteni a modelleket?

Itt például azt írják, hogy jobb a list (ami érthető is lenne)

   
Asylum - Törzstag | 5468 hsz       Online status #192415   2013.03.16 17:35 GMT+1 óra  
glsldevil egy kalap szar..,
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Pretender - Törzstag | 2498 hsz       Online status #192414   2013.03.16 17:34 GMT+1 óra  
Köszi

Közben előjött egy másik érdekesség is... visual studioból, vagy úgy egyébként duplaklikkel az exe-n indítva működik minden szépen, ha viszont a GlslDevil-lel indítom el, akkor nem találja meg pl. a glGetStringi és a glGenerateMipmap functionöket, amiket egyébként meg igen, és tök jól működik. Találkozott már valaki ilyesmivel?

   
Asylum - Törzstag | 5468 hsz       Online status #192412   2013.03.16 17:29 GMT+1 óra  
A gltexparameteri-t változatot használd.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Geri - Törzstag | 2193 hsz       Online status #192409   2013.03.16 16:37 GMT+1 óra  
xanat:

http://www.opengl.org/registry/specs/SGIS/generate_mipmap.txt

én ezt használtam.

általában tudják a driverek.

nyilván deprecated, de ki nem szarja le?

ha ez nem elérhető, akkor a glus baszásra fallbackeltem

   
syam - Törzstag | 1491 hsz       Online status #192403   2013.03.16 13:31 GMT+1 óra  
Lehet olyan intel kártya (is), ami már ogl 3.0 képességű, de a driver még csak 2.0-t tud. Ilyenkor még csak extension az fbo és a genmipmap is.
Én azt csinálom, h fbot, mint extensiont használom viszont a függvények defineolom EXT végződés nélküliekre, h ES2.0 alatt is forduljon.
alias aalberik
   
Pretender - Törzstag | 2498 hsz       Online status #192401   2013.03.16 12:37 GMT+1 óra  
Maga az image data az megvan, a lodepng-t használom, az megad egy ubyte arrayt. Amit leírtál, azzal tisztában vagyok. Azt olvastam én is, hogy elvileg FBO-val együtt jött. Az FBO 3.0-tól core, viszont egy alapvetően ogl 2.0-t támogató kártyán már van VBO, FBO meg séderek?

   
syam - Törzstag | 1491 hsz       Online status #192399   2013.03.16 11:56 GMT+1 óra  

http://sakura7.blog.hu/2010/07/15/mipmap_generalas_alsofokon

Textúrából ki tudod nyerni asztali GL-ben - glGetTexImage.
alias aalberik
   
Pretender - Törzstag | 2498 hsz       Online status #192398   2013.03.16 11:25 GMT+1 óra  
Ahogy láttam 3 lehetőség is van mipmapet generálni.
- gluBuild2DMipmaps - azt írják, hogy ne használjuk
- glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE) - gl 3.0-tól deprecated, szóval ez sem a legjobb feltétlen
- glGenerateMipmap: ennek meg ogl 3.0 kell, én meg szeretnék 2.0-n maradni.
Van valami egyéb lehetőség? Textúrából nem tudom kinyerni. Skálázzam le "kézzel"? Mindig a felére, és a színeket meg átlagolom? Valahogy így

   
ddbwo - Tag | 1654 hsz       Online status #192342   2013.03.15 12:22 GMT+1 óra  
Idézet
Pretender :
Nyilván ez a "megoldás" triviális, én valami okos megoldást kerestem


De inkább másokhoz intézett szavak, akik helyesen szeretnék érteni a megoldás lényegét:

Utólag minden triviális. Az okos megoldás nem csak azon múlik hogy elvileg mit ismersz, hanem hogy amit ismersz, hogyan akarod felhasználni.
Ennél pl. egyértelműen az if-eket, switch-eket kiváltja egyetlen pointer. A funkció pedig a teljes drawObject részt magába foglalhatja, ami amúgy is benne van valamilyen formában a programban.
Minimum annyi előny van benne, hogy gyorsan és szépen lehet kódolni. Valamint a futási idejű módosításra is lehetőséget ad. Pl ilyen graf API-nál csak futásnál derül ki mit támogat a gép.

Ezt a hozzászólást ddbwo módosította (2013.03.15 12:51 GMT+1 óra, ---)
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Geri - Törzstag | 2193 hsz       Online status #192310   2013.03.14 19:39 GMT+1 óra  
én csak ARB-t használtam, nagyon nagyon ritkán ext-et.

   
ddbwo - Tag | 1654 hsz       Online status #192304   2013.03.14 18:32 GMT+1 óra  
Írtam kód kiegészítést is, hátha jobban átmegy. Ez az egyetlen megoldás és minden lib tele van ilyenekkel. Ez c++, ennél jobban nem lehet optimalizálni, ha van is időveszteség, a minimálisnál is minimálisabb.

Ez a kötekedés nálad vmi elvi kérdés lehet, talán megsérti az osztály-első önérzeted v nemtom, ha azt mondod, "hogy jó-jó, de közbe inkább elfelejtem h rendesen elrendezzem a funkcióimat, mert sok vele a gond."

Hát ha ez kell, akkor:
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Pretender - Törzstag | 2498 hsz       Online status #192301   2013.03.14 18:19 GMT+1 óra  
Nem, nem ez az, amire kíváncsi voltam Ilyen szuperszetes hülyeséget meg nem fogok csinálni Ráadásul remélem tisztában vagy azzal, hogy function pointeren keresztül hívni valamit költségesebb, mint simán függvényként. Arról nem is beszélve, hogy van egy function pointered, ami rámutat egy olyan függvényre, ami meghív egy function pointeren keresztül egy függvényt...
Nyilván ez a "megoldás" triviális, én valami okos megoldást kerestem, de szerencsére nem lesz ilyesmire szükség.

// Ignore: ON

   
ddbwo - Tag | 1654 hsz       Online status #192300   2013.03.14 18:17 GMT+1 óra  
Most magyarázd már meg...

Minden osztályokból van. Adatok egy helyen. ált van egy olyan, hogy drawObject()
drawObject kap egy osztály ref-et. drawObject() pointeréhez szépen csatolod a megfelelő funkciót, ami abból felhasználja a szükséges adatokat.
Miért, mire számítottál? Ez megoldja a felmerült problémát, ahogy kérted. Ez az amire kíváncsi voltál.

És nincs a GLEE se használva.

Kód:
void (*drawObject)(obj&);
void draw1(obj &in)
{
    glValami_NV_EXT(in->ez, in->az);
}
void draw2(obj &in)
{
    glValami_ATI_EXT(in->ez);
}

Ezt a hozzászólást ddbwo módosította (2013.03.14 20:14 GMT+1 óra, ---)
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Pretender - Törzstag | 2498 hsz       Online status #192296   2013.03.14 18:10 GMT+1 óra  
Persze, csináljuk meg a paraméterek szuperszetjét, és abból azt használja, amit éppen kell. Hát persze
Nagyjából ez lenne a te elképzelésed megvalósítása:
Kód:
void glFunc1(int&);
void glFunc2(float&);
void glFunc3(int&, float&, bool&);

typedef void (*myFunc)(int&, float&, bool&);

void myFunc1(int& a, float& b, bool& c)
{
    glFunc1(a);
}
void myFunc2(int& a, float& b, bool& c)
{
    glFunc2(b);
}
void myFunc3(int& a, float& b, bool& c)
{
    glFunc3(a, b, c);
}

Attól, hogy valamit nem fogsz fel / rosszul értelmezel, attól még nem a másik a hibás... No de én itt befejeztem, reménytelen eset vagy, inkább azoktól várnék választ, akik értik is, amit csinálnak, és nem csak "sitty-sutty" megtanulják a dolgokat

   
ddbwo - Tag | 1654 hsz       Online status #192294   2013.03.14 18:06 GMT+1 óra  
Hogy valakinek még segíteni is ilyen nehéz legyen...

Az mindegy hogy néz ki a végső funkciód, mert a fun1 és fun2 alá ugyanaz bemehet, ahol a bejövő adatokból azt használja fel, ami kell ahoz a szignatúrához.

Ezt a hozzászólást ddbwo módosította (2013.03.14 20:46 GMT+1 óra, ---)
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Pretender - Törzstag | 2498 hsz       Online status #192293   2013.03.14 18:04 GMT+1 óra  
Szerintem előbb tanulj meg olvasni, gondolkozni, aztán írd a hülyeségedet.

   
ddbwo - Tag | 1654 hsz       Online status #192292   2013.03.14 18:02 GMT+1 óra  
Akkor hiába tanulsz, mert ezzel gyerekjáték megcsinálni.

Előbb még if-ezni akartál...
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Pretender - Törzstag | 2498 hsz       Online status #192291   2013.03.14 18:00 GMT+1 óra  
Nem voltam erre kíváncsi, de köszi, h leírtad, amit már pár éve tudok (megjegyzem pontosan ezt csinálja az ember az extensionökkel is, csak egy külső libből lookupolja fel).
Az "ifezést" meg arra az esetre gondoltam, ha a két függvény szignatúrája nem egyezik meg. De lehet, hogy nem ismered ezt a szót, ezért kifejtem:
Kód:
void func1(const int&);
void func2(const int&, const float&);

Ennek a két függvénynek eltérő szignatúrája van Ha az adott funkcionalitást két különböző szignatúrájú függvény írja le, akkor nem tudod simán function pointeren keresztül meghívni, tehát "ifezel".

   
ddbwo - Tag | 1654 hsz       Online status #192289   2013.03.14 17:52 GMT+1 óra  
Visszatérve az if-ezéshez:

A program gyökereinél is megragadhatod az irányítást. Megírhatod a csodaszép glCheckminator-t C++ban.
Kérd meg a tanárurat, hogy durvuljon be, mert ha nem, ilyen csodákról maradhatsz le:

Kód:
/**
    @author ddbwo
    'AS-IS', no felelösség
    c++ function pointer tutorial
**/

#include <stdio.h>

void fun1(int &inout, const int add)
{
    inout+=add;
    printf("addni fogunk.\n");
}
void fun2(int &inout, const int mul)
{
    inout*=mul;
    printf("szorzni fogunk.\n");
}

void (*ddbwoFunction)(int&,const int);

int main()
{
    int johaver=10;
    int ertek=4;

    ddbwoFunction = fun1;

    ddbwoFunction(johaver,ertek);
    printf("az annyi, mint: %d\n",johaver);

    printf("\n");

    ddbwoFunction = fun2;

    ddbwoFunction(johaver,ertek);
    printf("az annyi, mint: %d\n",johaver);
}

Ezt a hozzászólást ddbwo módosította (2013.03.14 17:59 GMT+1 óra, ---)
A Half-Life 2: Deathmatch promóció megszűnt! [B¤°
Kezdetben volék az üresség. Ám akkor a Struktúrfüggöny megteremté az Urat.
DrunkenDragon* Blackwolf
   
Pretender - Törzstag | 2498 hsz       Online status #192286   2013.03.14 17:36 GMT+1 óra  
Aha, akkor érdemes azt... Nem is emlékszek már, hogy pontosan hogy van: az ogl verzió azt határozza meg, hogy alapvetően mely extensionök érhetőek el? pl. az rémlik, hogy ha shaderezni akarok, akkor az ogl 2.0-tól van. Ezek szerint amelyik kártya azt támogatja, ott már lesz shader, vagy az extension anélkül is elérhető esetleg?

   
Asylum - Törzstag | 5468 hsz       Online status #192284   2013.03.14 17:20 GMT+1 óra  
ARB-t erdemes eloszor nezni (nekem ez azt jelenti, hogy a review board elfogadta es a szabvany resze), ha az nincs akkor EXT, a tobbit meg nem szoktam, mert nem tudni h megbizhato-e.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
syam - Törzstag | 1491 hsz       Online status #192281   2013.03.14 16:18 GMT+1 óra  
Nyilván a szignatúrának egyeznie kell, de ez szerintem általában igaz is.

Én nem szeretek vendor spec. lenni. ARB és EXT. Az intel gl driverek pedig mindenhonnan nézve xarok.
alias aalberik
   
Pretender - Törzstag | 2498 hsz       Online status #192280   2013.03.14 16:09 GMT+1 óra  
Ez csak akkor igaz, ha a szignatúrájuk megegyezik. Ez általában igaz? Eddig egy példát láttam, aminél ez nem jön be: wglGetExtensionsStringARB vs wglGetExtensionsStringEXT. Egyiknek kell a device context, a másiknak nem.

Anno, amikor ogl-eztem, akkor volt az Intel kártyákon szívás. Ott nem lehet, hogy jobb az Inteles extension? Vagy ezek nem úgy vannak, hogy a saját fejlesztésük a saját kártyáikon a legjobbak? Bár az ARB-t meg elfogadták nagyjából...

   
syam - Törzstag | 1491 hsz       Online status #192279   2013.03.14 16:00 GMT+1 óra  
Ha te kérdezed le a függvények címeit, akkor úgy nevezed el a függvényeket ahogy akarod és akkor nem kell if.

Érdemes csak ARB-t használni esetleg EXT-t. De igazából a függvénynévvel el tudod rejteni a kódodban, h éppen melyik verziót használod.

Kód:
cica = wglGetProcAddress( "cica_ARB");
if( !cica)  = wglGetProcAddress( "cica_EXT");
if( !cica)  = wglGetProcAddress( "cica_NV");
if( !cica) exit( -C1CA)


Amúgy glew rlz ^^
alias aalberik
   
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] [82]