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]
Pretender - Törzstag | 2498 hsz       Online status #171806   2012.01.02 21:19 GMT+1 óra  
Csak gondoltam spórolok ezen is Amúgy milyen oka lehet annak, hogy ha VBO-val próbálok rajzolni, akkor semmi nem látszik? az lehetséges, hogy azért, mert a GPU-nak feltöltött Vertexstruktúrámban a Position, Normal meg Texcoord egy-egy másik struktúra? (Vector3, Vector2)
Szóval így:
Kód:
struct Vertex
{
    Vector3 Position;
    Vector3 Normal;
    Vector2 Texcoord;

    static const int SIZE = 32;

   
Asylum - Törzstag | 5468 hsz       Online status #171800   2012.01.02 20:40 GMT+1 óra  
Idézet
Pretender :
A bind az nekem rendben van, én a client statekre, meg a glVertexPointer-re és társaira gondolok. Ha az minden egyes modellnél azonos (pl. Position, Normal, Texcoord mindegyiknél), akkor ezeket nem elég egyszer beállítani? Hasonlóan a glEnableClientState.



Erre ne építs, sose tudhatod hogy mikor bövited ki ugy az enginet, hogy tetszöleges layoutot tudjon használni (nálam az van, bár a dx miatt van egy default konvencióm, de egy maces programozó pont le fogja szarni). Azt viszont meg lehet csinálni, hogy minden layouthoz csinálsz egy egyedi azonositót, és ezeket a glpointer fveket levéded.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
syam - Törzstag | 1491 hsz       Online status #171797   2012.01.02 20:01 GMT+1 óra  
Ezt nem tudom. Meg kell nézni doksiban, hogy a vbo bindja érvényteleníti-e a már beállított offsetet.
alias aalberik
   
Pretender - Törzstag | 2498 hsz       Online status #171796   2012.01.02 19:53 GMT+1 óra  
A bind az nekem rendben van, én a client statekre, meg a glVertexPointer-re és társaira gondolok. Ha az minden egyes modellnél azonos (pl. Position, Normal, Texcoord mindegyiknél), akkor ezeket nem elég egyszer beállítani? Hasonlóan a glEnableClientState.

   
syam - Törzstag | 1491 hsz       Online status #171795   2012.01.02 19:38 GMT+1 óra  
A "belőni" az nem teljesen egyértelmű számomra.

Kitalálod mit raksz a vboba és amikor használni akarod a belerakott adatot akkor bindolod azt. Ha olyan adatot akarsz használni ami nem abban a vboban / nincs egyáltalán vboban akkor bindolod a másik vbot / 0-t bindolsz.
alias aalberik
   
Pretender - Törzstag | 2498 hsz       Online status #171794   2012.01.02 19:31 GMT+1 óra  
de ha az összes mesh "komponensei" megegyeznek (azaz pl. mindegyik csak position, texcoord, normal), akkor azt elég egyszer belőni az összes mesh előtt, és nem kell mindegyiknél?

   
syam - Törzstag | 1491 hsz       Online status #171793   2012.01.02 19:12 GMT+1 óra  
Mangal:
Per-fragment árnyalás kell neked csak azzal tudsz ilyet - vagy tesszellálod a 2 quadot.

Pretender:
A VBO az nem egyenlő vertex array. Nincs belőle többféle és nincs hozzá enable/disable - "bind van csak". A VBO "gpu oldali" adattárolásra való, nem tudja milyen adat van benne, hány komponensű. Csak a méretét tudja byteban.
A glvertexattribpointer vagy glvertexpointer és társaira van hatással ill. a gldraw... függvényekre.
alias aalberik
   
Mangal - Tag | 19 hsz       Online status #171792   2012.01.02 18:39 GMT+1 óra  
Azzal is ez a helyzet,csak a csúcspontokat világítja be.

   
Pretender - Törzstag | 2498 hsz       Online status #171791   2012.01.02 18:33 GMT+1 óra  
Idézet
Mangal :
Heló!
Irányított fénynél hogy lehet elérni,hogy egy 2d quadnál egy kört világítson ki,ne pedig csúcspontokra számolja ki a hatást?


Az irányított fénynek a lényege, hogy minden pontra ugyan úgy hat. Kört az spot lighttal tudsz

   
Pretender - Törzstag | 2498 hsz       Online status #171790   2012.01.02 18:32 GMT+1 óra  
akkor ahol lehet, érdemes az ARB-s verziót használni, ha jól értem.
Mostanában nem csináltam semmit, szóval ismét VBO: hogy van ez akkor? Láttam több félét is, pl. EnableClientState minden egyes mesh esetén kell, vagy csak rajzolás előtt, és Disable az összes mesh rajzolása után? Illetve:
glEnableVertexAttribArray vs. gl*Pointer
Illetve ugye ehhez kapcsolódóan igaz-e ez is, az előzőre? (összes mesh rajzolása előtt, vagy minden mesh előtt?)

   
Mangal - Tag | 19 hsz       Online status #171788   2012.01.02 18:23 GMT+1 óra  
Heló!
Irányított fénynél hogy lehet elérni,hogy egy 2d quadnál egy kört világítson ki,ne pedig csúcspontokra számolja ki a hatást?

   
Asylum - Törzstag | 5468 hsz       Online status #171787   2012.01.02 17:41 GMT+1 óra  
Arra figyelj, hogy nem mindegyiknél csak a postfix a különbség; például a shaderes extension eléggé át lett nevezgetve (viszont so far ez az egyetlen lényeges).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
syam - Törzstag | 1491 hsz       Online status #171786   2012.01.02 17:23 GMT+1 óra  
Elvileg semmi.
Gyakorlatilag a postfix nélküli változat már a core része vagyis ahhoz már az adott verziójú OGL támogatás szükséges.
Pl. ha FBO-t használsz EXT nélkül, akkor 3.0 a min. verziókövetelmény, ha EXT-tel használod akkor csak 1.1 (+ FBO extension támogatás).
alias aalberik
   
Pretender - Törzstag | 2498 hsz       Online status #171784   2012.01.02 16:32 GMT+1 óra  
Mi a különbség a "sima" és az ARB extensionök között? pl. glBufferData vs. glBufferDataARB

   
Pretender - Törzstag | 2498 hsz       Online status #171745   2012.01.01 20:14 GMT+1 óra  
Idézet
Geri :
szerintem felesleges ilyesmivel bonyolítani a dolgot, csak a kódod komplexitását növeli feleslegesen. nem lesz jelentősen lassabb a rendszered akkor se, ha szűkség esetén textúrát váltassz


Na, meg is van egy újabb optimalizáció a számodra. Jó munkát

   
Asylum - Törzstag | 5468 hsz       Online status #171744   2012.01.01 20:02 GMT+1 óra  
Idézet
zeller :
kezelheted kulon modulkent



Ilyet ne mondj neki, az lassitja a forditást
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
zeller - Törzstag | 480 hsz       Online status #171743   2012.01.01 20:01 GMT+1 óra  
@geri
Sztem egy ilyen kodot eleg egyszer megirni, ha standardizalod a parametereit a texturanak, ezt pedig kezelheted kulon modulkent igy nem fujja fel a kodot. Sot, a legjobb, ha meta kodot irsz es forditokat gpu-kra

   
Asylum - Törzstag | 5468 hsz       Online status #171742   2012.01.01 20:01 GMT+1 óra  
Én minden epszilonnál kisebb marhasághoz textura atlaszt használok (és mellé természetesen static vagy dynamic batchinget ami részecskéknél elengedhetetlen).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
fpeti - Törzstag | 1294 hsz       Online status #171741   2012.01.01 19:52 GMT+1 óra  
Én az összes részecskerendszert is képes vagyok egy rajzolással megoldani, mert color-ban átadok tile méretet x,y indexet tile-ra és elfordulást, így még külön-külön foroghatnak is - ezt pixelshaderben, a tileozás vs-ben mehet. Elég jól bevált. így egy rajzolás a alfásoknak, egy a addivitve és egy a sima blendelteknek. Mondjuk ez azoknak lehet fontos, ahol sok minden robbanhat egyszerre. hehe
   
Geri - Törzstag | 2193 hsz       Online status #171739   2012.01.01 19:03 GMT+1 óra  
szerintem felesleges ilyesmivel bonyolítani a dolgot, csak a kódod komplexitását növeli feleslegesen. nem lesz jelentősen lassabb a rendszered akkor se, ha szűkség esetén textúrát váltassz

   
syam - Törzstag | 1491 hsz       Online status #171734   2012.01.01 14:45 GMT+1 óra  
Igen. Egy részecskerendszert akár egy textúraváltással megúszol.
alias aalberik
   
Mangal - Tag | 19 hsz       Online status #171733   2012.01.01 14:37 GMT+1 óra  
Sebesség szempontjából is a 2.ik az előnyösebb?

   
Matzi - Szerkesztő | 2524 hsz       Online status #171732   2012.01.01 14:27 GMT+1 óra  
Az utóbbit, mert úgy jó eséllyel ráférsz egyetlen értelmes méretű textúrára, és nem kell sok apró kicsit betöltened hozzá.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Mangal - Tag | 19 hsz       Online status #171731   2012.01.01 14:23 GMT+1 óra  
Heló!
Szerintetek sprite alapú animáció kezelésénél melyik a célszerűbb
,a képkockákat külön textúraként legenerálni, vagy pedig az össz képet egy nagy képként, és azt úgy feszíteni a quadtra hogy csak egy képkocka látszon belőle?

   
MaNiAc - Szerkesztő | 1735 hsz       Online status #171521   2011.12.28 22:51 GMT+1 óra  
Idézet
proof88 :
hát nem le lettem cseszve?!
de most valszeg nem az lesz a bottleneck hogy 4x4-et használ 3x3 helyett, na!

Részemről abszolút nem lecseszésnek szántam. Csak annyit mondtam, hogy egyetértek Gerivel abban, hogy sok kis optimizációs lehetőség kihagyása is okozhat nagy performance-veszteséget.
Dare to imagine!
http://www.insaneidea.hu
   
proof88 - Törzstag | 530 hsz       Online status #171518   2011.12.28 22:29 GMT+1 óra  
hát nem le lettem cseszve?!
de most valszeg nem az lesz a bottleneck hogy 4x4-et használ 3x3 helyett, na!
   
syam - Törzstag | 1491 hsz       Online status #171511   2011.12.28 20:11 GMT+1 óra  
Ha tudod egy mátrixról, h csak eltolást és forgatást tartalmaz akkor azt gyorsan tudod invertálni: minor mátrix transzponálás aztán az eltolást transzformálod és negálod a transzponált minor mátrixszal.
Ha jól tudom a skálázást is bele lehet venni a tengelyek hosszának figyelembevételével.
alias aalberik
   
Asylum - Törzstag | 5468 hsz       Online status #171510   2011.12.28 20:09 GMT+1 óra  
Lagrange-féle kifejtési tétel (ez az a bizonyos aldeterminánsos). Telejesen jól használható, nem kell hozzá se ciklus se semmi (viszont jó sok szorzás).
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Eldor - Tag | 163 hsz       Online status #171508   2011.12.28 20:00 GMT+1 óra  
Ketfele modszert tanultam invertalasra. Az egyik bazistranszformaciokkal tortenik, a masik pedig adjungalt matrixszal es determinansokkal. Ha jol sejtem, akkor a determinans szamolas futasi ideje faktorialis, szoval ez esetben egyaltalan nem mindegy, hogy 2x2-es vagy 3x3-as determinansokkal kell szamolni. Elso megerzesre a masik algoritmus kobos, igy ez esetben sem lenyegtelen a ketto kozti kulonbseg. Szoval ha van ra mod, akkor sporolok. Bar meg mindig nem hiszem, hogy hasznalni fogom.
Amugy Ti melyiket implementalnatok? Vagy valami mas algoritmust hasznaltok?

   
Pretender - Törzstag | 2498 hsz       Online status #171493   2011.12.28 18:08 GMT+1 óra  
ja, azt csak összeröffentettem tudom mi mit csinál...

   
gaborlabor - Moderátor | 4449 hsz       Online status #171492   2011.12.28 18:03 GMT+1 óra  
Idézet
Pretender :
Idézet
MaNiAc :
Ott a pont! Például kezdésnek mi értelme a glLoadIdentity()-nek glLoadMatrix() előtt, ráadásul 2x is?

(Idezet a glLoadMatrix() doksijabol: "glLoadMatrix replaces the current matrix..."


most miről is beszélsz?


Arról, hogy a kódodban indokolatlanul sok a glLoadIdentity(...)

   
Asylum - Törzstag | 5468 hsz       Online status #171483   2011.12.28 17:17 GMT+1 óra  
Idézet
Geri :




Igen, neked szólt, Geri. Tudom, hogy te framenként vered a milliós rajzolási számot, lászik is a szarjaidon.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Pretender - Törzstag | 2498 hsz       Online status #171481   2011.12.28 17:15 GMT+1 óra  
Idézet
MaNiAc :
Idézet
Geri :
Idézet
proof88 :
sose ilyen piszlicsáré dolgokon próbálj spórolni ... add meg a módját a dolgoknak, az algoritmusokon optimalizálj! Keresgélj, olvass utána módszereknek, van-e jobb, stb. Ilyen bájtokon nem érdemes spórolni.



ott kell spórolni, ahol bottleneck van. ha framenként 2 milliószor megcsinálod a piszlicsárét, és amiatt szaggat a gecibe, akkor a piszlicsárén kell spórolni more

Ott a pont! Például kezdésnek mi értelme a glLoadIdentity()-nek glLoadMatrix() előtt, ráadásul 2x is?

(Idezet a glLoadMatrix() doksijabol: "glLoadMatrix replaces the current matrix..."


most miről is beszélsz?

   
Geri - Törzstag | 2193 hsz       Online status #171479   2011.12.28 17:12 GMT+1 óra  
lol, asylum megszólalt megint

Idézet
Asylum :
Ha valamit framenként 2 millioszor csinál, akkor inkább ne is programozzon.




   
Asylum - Törzstag | 5468 hsz       Online status #171478   2011.12.28 17:10 GMT+1 óra  
Idézet
Matzi :
Egy pixel shader kód azért simán lefut 2 milliószor framenként, néha ott kell optimalizálni.



Párhuzamositva nem ér
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
syam - Törzstag | 1491 hsz       Online status #171475   2011.12.28 16:20 GMT+1 óra  
Kövessétek a Samsung driveríróinak a tanácsát: ne renderelj sokat, mert lassít!
alias aalberik
   
Matzi - Szerkesztő | 2524 hsz       Online status #171474   2011.12.28 15:38 GMT+1 óra  
Egy pixel shader kód azért simán lefut 2 milliószor framenként, néha ott kell optimalizálni.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Asylum - Törzstag | 5468 hsz       Online status #171473   2011.12.28 15:34 GMT+1 óra  
Ha valamit framenként 2 millioszor csinál, akkor inkább ne is programozzon.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
MaNiAc - Szerkesztő | 1735 hsz       Online status #171468   2011.12.28 13:36 GMT+1 óra  
Idézet
Geri :
Idézet
proof88 :
sose ilyen piszlicsáré dolgokon próbálj spórolni ... add meg a módját a dolgoknak, az algoritmusokon optimalizálj! Keresgélj, olvass utána módszereknek, van-e jobb, stb. Ilyen bájtokon nem érdemes spórolni.



ott kell spórolni, ahol bottleneck van. ha framenként 2 milliószor megcsinálod a piszlicsárét, és amiatt szaggat a gecibe, akkor a piszlicsárén kell spórolni more

Ott a pont! Például kezdésnek mi értelme a glLoadIdentity()-nek glLoadMatrix() előtt, ráadásul 2x is?

(Idezet a glLoadMatrix() doksijabol: "glLoadMatrix replaces the current matrix..."
Dare to imagine!
http://www.insaneidea.hu
   
Geri - Törzstag | 2193 hsz       Online status #171462   2011.12.28 13:19 GMT+1 óra  
Idézet
proof88 :
sose ilyen piszlicsáré dolgokon próbálj spórolni ... add meg a módját a dolgoknak, az algoritmusokon optimalizálj! Keresgélj, olvass utána módszereknek, van-e jobb, stb. Ilyen bájtokon nem érdemes spórolni.



ott kell spórolni, ahol bottleneck van. ha framenként 2 milliószor megcsinálod a piszlicsárét, és amiatt szaggat a gecibe, akkor a piszlicsárén kell spórolni more

   
proof88 - Törzstag | 530 hsz       Online status #171432   2011.12.27 21:48 GMT+1 óra  
sose ilyen piszlicsáré dolgokon próbálj spórolni ... add meg a módját a dolgoknak, az algoritmusokon optimalizálj! Keresgélj, olvass utána módszereknek, van-e jobb, stb. Ilyen bájtokon nem érdemes spórolni.
   
Pretender - Törzstag | 2498 hsz       Online status #171431   2011.12.27 21:33 GMT+1 óra  
szükséged lehet rá például, ha deferred shadinget csinálsz, ott rögtön kell.

   
Asylum - Törzstag | 5468 hsz       Online status #171430   2011.12.27 21:33 GMT+1 óra  
Nem a mátrix invertáláson kell spórolni.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
Eldor - Tag | 163 hsz       Online status #171428   2011.12.27 21:18 GMT+1 óra  
Nem akarok sporolni rajta, csak elmeleti sikon erdekel a dolog. Eddig meg mindenhol eltaroltam a teljes 4x4-es matrixot. Mondjuk invertalas eseten egy ilyen tulajdonsag kihasznalasa gyorsithatja az algoritmus futasi idejet. Bar nem tudom, hogy szuksegem lesz-e modelview matrix invertaltjara. Egyenlore meg nem latom sok ertelmet.

   
Asylum - Törzstag | 5468 hsz       Online status #171421   2011.12.27 16:01 GMT+1 óra  
Akár van akár nincs, ezzel nem jo ötlet spórolni.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
zeller - Törzstag | 480 hsz       Online status #171420   2011.12.27 15:39 GMT+1 óra  
A lenyeg, hogy homogen liearis transzformacioknal alul (0,0,0,1) van. Legalabbis igy remlik, de javitsatok ki, ha tevedek.

   
Eldor - Tag | 163 hsz       Online status #171403   2011.12.27 06:50 GMT+1 óra  
Bocs, elfelejtettem irni, hogy csak Modelview matrixra gondoltam.

   
fpeti - Törzstag | 1294 hsz       Online status #171398   2011.12.26 19:44 GMT+1 óra  
Projekciós mátrixnál lehet alul más is.
   
Eldor - Tag | 163 hsz       Online status #171393   2011.12.26 18:51 GMT+1 óra  
Egy 4x4-es matrix eseteben a legalso sornak van valamilyen specialis jelentese? En eddig csak ilyen matrixxal talalkoztam:

Kód:
m00    m10    m20    x
m01    m11    m21    y
m02    m12    m22    z
0      0      0      1


Ezzel a matrixxal az utolso oszlop hatarozza meg az eltolas merteket. A m00 -> m22 3x3-as matrix pedig a forgatast es az atmeretezest valositja meg.

Tehat a kerdes ujra, hogy ne kelljen visszaolvasni:
Az also sort szoktak barmire hasznalni? Fogok valaha talalkozni olyan matrixxal, amiben az also sor nem (0, 0, 0, 1)?

   
Pretender - Törzstag | 2498 hsz       Online status #171367   2011.12.25 10:47 GMT+1 óra  
tudom nem túl optimális a dolog, de akkor sem ésszerű, hogy alt-tab után megjavult, de a draw-ban most csak ennyi van:
Kód:
glMatrixMode(GL_PROJECTION);
glLoadIdentity();

Matrix proj = Matrix::PerspectiveFOView(Pi/4.0f, 4.0f/3.0f, 0.1f, 1000.0f);
glLoadMatrixf((const float*)&proj);

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

Matrix viewOrient = Matrix::RotationY(0.1f * a);
Vector3 eye = Vector3(0.0f,2.0f,-5.0f);
Matrix view = Matrix::LookAt(Vector3::Transform(eye,viewOrient),Vector3::Zero,Vector3::Up);
glLoadMatrixf((const float*)&view.m);

glPushMatrix();
{
Matrix world = Matrix::RotationY(a);
glMultMatrixf((const float*)&world.m);

glBegin(GL_TRIANGLES);

glColor3f(1,0,0);
glVertex3f(0,1,0);

glColor3f(0,1,0);
glVertex3f(-1,-1,0);

glColor3f(0,0,1);
glVertex3f(1,-1,0);

glEnd();
}
glPopMatrix();

Ha a push-pop közötti kód nincs, akkor fullscreenen normális sebességgel megy az üres képernyő alt-tab nélkül is.

   
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]