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

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2185
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1625
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]
Seeting - Törzstag | 2306 hsz       Online status #126864   2010.01.23 15:00 GMT+1 óra  
Ilyen, most csak két oldalt definiáltam:


A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu
   
Joga - Törzstag | 1791 hsz       Online status #126863   2010.01.23 14:57 GMT+1 óra  
Vagy a backface culling, vagy a depth test, sok választás nincs
(ಠ ›ಠ) Stewie!

   
Seeting - Törzstag | 2306 hsz       Online status #126862   2010.01.23 14:56 GMT+1 óra  
Rájöttem, hogy nem is átlátszó... Azt csinálja hogy a kocka első lapja mögötti lapot (ami kocka hátoldala) az első lap elé rajzolja.
   
Joga - Törzstag | 1791 hsz       Online status #126860   2010.01.23 14:45 GMT+1 óra  
Akkor bizony nem maradt más, nem lehetne egy kicsit hosszabb kódot kapni, vagy hogy mikhez nyúlsz hozzá?( textúra, bufferek, stb )
(ಠ ›ಠ) Stewie!

   
Seeting - Törzstag | 2306 hsz       Online status #126859   2010.01.23 14:38 GMT+1 óra  
Nincs color arrayem. glMaterialfv-t használok. Az első két ponthoz biztosan nem nyúltam. Poltergeist...
   
Joga - Törzstag | 1791 hsz       Online status #126858   2010.01.23 14:34 GMT+1 óra  
Nincs sok választási lehetőség:
1.: depth buffer/depth maskot megpiszkáltad
2.: A color arrayban piszkáltál valami, vagy a glColor4f-fel bűvészkedtél valamit, és elfelejtetted
3.: Stenciltesztel bűvészkedtél és az maradt benn
4.: Háromnap múlva belenézel a kódodra, és a fejedre csapsz, hogy "Hogyan nem vettem észre?!"
(ಠ ›ಠ) Stewie!

   
Seeting - Törzstag | 2306 hsz       Online status #126857   2010.01.23 14:32 GMT+1 óra  
Értem. De szerintem nem ezért átlátszó mert a shotot kínomban ilyen állapotban csináltam:

glVertexPointer(3, GL_FLOAT, 0, ((*prModellsIt).second).Vertices);
glNormal3f(1.0f,0.0f,0.0f);
glDrawArrays(GL_QUADS,0,24);

Szóval elvileg minden vertexnek ugyanaz a normálvektora. Eszerint a kocka csak egy oldalán veri vissza a fényt teljesen, a többi sötét marad. De mitől látszik át?
   
Joga - Törzstag | 1791 hsz       Online status #126856   2010.01.23 14:28 GMT+1 óra  
Nem, egy vertexhez tartozik egy normálvektor
( 72 vertexhez 72 normál )

egy face-hez pedig annyi normálvektor tartozik, ahány csúcsa van, triangle esetén 3, quad esetén 4, stb

mivel quadokat adsz meg, ezért egy face-hez 4 normál fog tartozni
(ಠ ›ಠ) Stewie!

   
Seeting - Törzstag | 2306 hsz       Online status #126855   2010.01.23 14:23 GMT+1 óra  
Idézet
Joga :
azt, hogy a normálvektor array 18 elemű ugye úgy érted, hogy kockánként 18 elemű, ugye?

72 elemű vertex arrayhoz 72elemű normálvektor array tartozik



Azért gondoltam, hogy 18 elemű, mert a kockának 6 oldala van, 1 oldal 1 face és 1 face-hez 3 normálvektor pozíció tartozik.

6*3=18

Magyarázd már el kérlek, hogy miért 72 elemű normálvektor kell
   
Seeting - Törzstag | 2306 hsz       Online status #126854   2010.01.23 14:21 GMT+1 óra  
Idézet
fpeti :
Lehet hülyeség, de nem backface-eket rajzolod? az is így néz ki.



glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, material);

és counter clockwise-ban rajzolok.

Ezt a hozzászólást Seeting módosította (2010.01.23 14:26 GMT+1 óra, ---)
   
fpeti - Törzstag | 1280 hsz       Online status #126853   2010.01.23 14:18 GMT+1 óra  
Lehet hülyeség, de nem backface-eket rajzolod? az is így néz ki.
   
Joga - Törzstag | 1791 hsz       Online status #126852   2010.01.23 14:16 GMT+1 óra  
azt, hogy a normálvektor array 18 elemű ugye úgy érted, hogy kockánként 18 elemű, ugye?

72 elemű vertex arrayhoz 72elemű normálvektor array tartozik
(ಠ ›ಠ) Stewie!

   
Seeting - Törzstag | 2306 hsz       Online status #126849   2010.01.23 14:01 GMT+1 óra  
Mitől lehet az, hogy az objektumaim átlátszanak?


A képet a Képfeltöltés.hu tárolja. http://www.kepfeltoltes.hu

A fényeket állítottam be rosszul? Vagy talán hibás a vertex array? Esetleg a Normalvector array?

Ha van egy 72 elemű vertex array-em, ami GL_QUAD-okat határoz meg, akkor a normálvektor array 18 elemű, igaz?
   
Joga - Törzstag | 1791 hsz       Online status #126835   2010.01.23 08:55 GMT+1 óra  
(ಠ ›ಠ) Stewie!

   
Seeting - Törzstag | 2306 hsz       Online status #126834   2010.01.23 08:51 GMT+1 óra  
Ez bejött, köszi!

Azt nem tudom, hogy ezek a fickók hogy nem jöttek rá:
http://stackoverflow.com/questions/535317/checking-value-exist-in-a-stdmap-c
   
Joga - Törzstag | 1791 hsz       Online status #126833   2010.01.23 08:45 GMT+1 óra  
mymap.count( index )
Ez visszaadja, hány darab index-szel jelölt elem van, ebben az esetben egy, ha van, nulla, ha nincs ilyen elem
(ಠ ›ಠ) Stewie!

   
Seeting - Törzstag | 2306 hsz       Online status #126832   2010.01.23 08:42 GMT+1 óra  
Ebben meg lehet nézni valahogy, hogy létezik-e a keresett elem?
   
Seeting - Törzstag | 2306 hsz       Online status #126831   2010.01.23 08:21 GMT+1 óra  
   
Joga - Törzstag | 1791 hsz       Online status #126830   2010.01.23 08:18 GMT+1 óra  
Én azt mondom az sdl::map jobb, ha index alapján tárolsz dolgokat
(ಠ ›ಠ) Stewie!

   
Seeting - Törzstag | 2306 hsz       Online status #126829   2010.01.23 08:15 GMT+1 óra  
Ez a map így első ránézésre pont úgy hangzik mint ami nekem kell. Lehetne a key az index, a mapped value meg a modell osztály példánya.

Akkor azt mondod, hogy dobjam az stl::vector-t?
   
Seeting - Törzstag | 2306 hsz       Online status #126828   2010.01.23 08:12 GMT+1 óra  


Nem kellett volna boroznom tegnap.
   
Joga - Törzstag | 1791 hsz       Online status #126826   2010.01.23 08:11 GMT+1 óra  
Jó, de a program sorbarendezheti betöltéskor a modelleket, nem?

szerk.: vagy próbálkozhatsz std::map-pal az valszeg jól fogja bírni a strapát
(ಠ ›ಠ) Stewie!

   
Seeting - Törzstag | 2306 hsz       Online status #126824   2010.01.23 08:08 GMT+1 óra  
De az index az tetszőleges, a szkripter adja meg. Egyfajta azonosítója a modellnek. Nem növekszik.

pl.

//file elérés, index
load modell "modell1.lwo",145
load modell "modell2.lwo",93

float szog=get modell angle x(93)

Most a vectorban a 93-as modell a második helyen van, de a lekérdezés nem ezt a helyet kéri hanem az indexet.
   
Joga - Törzstag | 1791 hsz       Online status #126823   2010.01.23 08:05 GMT+1 óra  
Asszem bináris keresésnek hívják:

Sorbarendezed a modelleket index szerint.
Van x modelled.
megnézed az x/2 dik modelled indexét, ha nagyobb, mint amit keresel balra, ha kisebb jobbra keresel, azt a részt is kettébontod, amíg meg nem találod
(ಠ ›ಠ) Stewie!

   
Seeting - Törzstag | 2306 hsz       Online status #126821   2010.01.23 08:02 GMT+1 óra  
Hogy lehetne gazdaságosan tárolni a modell indexeket?

Úgy szeretném megírni a scenemanagert, hogy könnyen lehessen szkriptelni a scene-t. Azt akarom, hogy ha betöltök egy modellt, akkor a betöltő eljárás bemenetében szerepeljen az adott modell indexe, amit a szkripter ad meg. Ez egy int.

Úgy tárolom a modelleket, hogy a modell osztálynak van egy id privátja, és egy vector-ba teszem magát a példányosított modellt.

Na most ez nem bizonyul gazdaságosnak: Ha például a játék loopjában le akarom kérdezni a modell pozícióját (a lekérdező fv. egy indexet kér be), akkor ahányszor meghívódik ez a fv, végig kell mennem a vektoron, hogy megnézzem hogy a benne lévő modellek közül melyiknek azonos az indexe a bemenettel.

Egy játék loopban rengeteg lekérdezést kell végezni számos létező modellhez, ezért nem akarom hogy x milliószor végigmenjen ugyanazon a cikluson.

Úgy akarom megoldani, mint ahogy a darkBASIC-ben van. Vajon ők hogy csinálták?
   
Eldor - Tag | 162 hsz       Online status #125840   2010.01.07 08:42 GMT+1 óra  
Le tudom kérdezni GLSL-ben, hogy engedélyezve van-e a textúrázás, vagy a fények és ha az utóbbi igen, akkor azok közül melyikek?

   
Eldor - Tag | 162 hsz       Online status #124772   2009.12.24 06:59 GMT+1 óra  
Ez gyors volt. Köszönöm a választ.

   
gaborlabor - Moderátor | 4449 hsz       Online status #124771   2009.12.24 06:58 GMT+1 óra  
A glReadBuffer() függvénnyel tudod szabályozni, hogy honnan olvasson. De az alapértelmezett érték a háttérbuffer (GL_BACK), tehát nem is kell módosítanod.

   
Eldor - Tag | 162 hsz       Online status #124770   2009.12.24 06:52 GMT+1 óra  
A glReadPixels() függvény a képernyőről vagy a háttérbufferből olvas? Ha a képernyőről, akkor van valami módszer arra, hogy a háttérbufferből olvassam ki az adatokat?

   
Joga - Törzstag | 1791 hsz       Online status #122987   2009.11.24 12:39 GMT+1 óra  
Nah, remélem, most nem postolás után 3 másodperccel jövök rá a megoldásra, viszont az megfogott, hogy az alábbi kód lefutása után a shaderben mindhárom sampler2D ugyanarra a textúrára mutat:
Kód:
    glActiveTexture( GL_TEXTURE0 );
    glEnable( GL_TEXTURE_2D );
    glBindTexture( GL_TEXTURE_2D, textures[0] );
    glUniform1i( glGetUniformLocation( fs, "tex0" ), GL_TEXTURE0 );


    glActiveTexture( GL_TEXTURE1 );
    glEnable( GL_TEXTURE_2D );
    glBindTexture( GL_TEXTURE_2D, textures[1] );
    glUniform1i( glGetUniformLocation( fs, "tex1" ), GL_TEXTURE1 );

    glActiveTexture( GL_TEXTURE2 );
    glEnable( GL_TEXTURE_2D );
    glBindTexture( GL_TEXTURE_2D, textures[2] );
    glUniform1i( glGetUniformLocation( fs, "tex2" ), GL_TEXTURE2 );
(ಠ ›ಠ) Stewie!

   
Joga - Törzstag | 1791 hsz       Online status #122970   2009.11.24 07:40 GMT+1 óra  
Szerk.: Semmi, hihetetlen balkuki voltam, és annyir szerkesztettem a kódot, hogy végül kikerült belőle a glCreateProgram();

na jó, mégsem lett jó
glee használata mellett döntöttem, viszont az alábbi program nem változtat az FFP-n, hibaüzenetet sem ír ki a shaderre.....Szóval az alábbi a kód az
Kód:
SDL_Init( .. );
SDL_SetVideoMode( .. ) ;

után van:
Kód:
   
    GLeeInit();
    vs = glCreateShader( GL_VERTEX_SHADER );
    fs = glCreateShader( GL_FRAGMENT_SHADER );

    const GLchar *src_vs = LoadSource( "shader.vs" );
    const GLchar *src_fs = LoadSource( "shader.fs" );

    glShaderSource( vs, 1, &src_vs, 0 );
    glShaderSource( fs, 1, &src_fs, 0 );

    glCompileShader( vs );
    glCompileShader( fs );

    char buffer[2048];  //Csakúgy poénból
    int l;
    glGetShaderInfoLog( vs, 2048, &l, buffer );
    if( l > 0 )cout << "Hiba a vertex shaderben:\n\t" << buffer << endl;
    glGetShaderInfoLog( fs, 2048, &l, buffer );
    if( l > 0 )cout << "Hiba a fragment shaderben:\n\t" << buffer << endl;

    glAttachShader( program, fs );
    glAttachShader( program, vs );
    glLinkProgram( program );
(ಠ ›ಠ) Stewie!

   
syam - Törzstag | 1491 hsz       Online status #122927   2009.11.23 14:16 GMT+1 óra  
Nincs valahol engedélyezve több texcoord array (glclientactivtexture) ? Esetleg normalpointer....
alias aalberik
   
Seeting - Törzstag | 2306 hsz       Online status #122924   2009.11.23 12:26 GMT+1 óra  
Örvendek.

Az én problémám sajnos ennél komplexebb

Az a baj, hogy túl hardver-közeli lett a program és ezeket a bugokat már nagyon kényes megtalálni. Már egy hete erőszakolom, és semmi. Memória gondok... lehet hogy így bosszulja meg magát a Java amiért a C++-t választottam XD
   
Joga - Törzstag | 1791 hsz       Online status #122922   2009.11.23 12:03 GMT+1 óra  
igen, le
Szerk.: Meg is van a megoldás: nem használtam a glew-t

Ezt a hozzászólást Joga módosította (2009.11.23 12:21 GMT+1 óra, ---)
(ಠ ›ಠ) Stewie!

   
Seeting - Törzstag | 2306 hsz       Online status #122921   2009.11.23 12:03 GMT+1 óra  
A többi gl-es hívás lefut?
   
Joga - Törzstag | 1791 hsz       Online status #122918   2009.11.23 11:52 GMT+1 óra  
Valakinek van valami tippje arra, hogy miért tekinti a fordító a GLSL-lel kapcsolatos függvényeket( glShaderSource, glCompileShader ) deklarálatlannak, amikor az intellisense felismeri és a header file-okban is benne van?
( Code::Blocks, SDL-lel, és a glext is iclude-olva van, az OpenGL verzióm pedig 2.0.3 )
(ಠ ›ಠ) Stewie!

   
Seeting - Törzstag | 2306 hsz       Online status #122909   2009.11.23 09:59 GMT+1 óra  
Itt valami felülíródik a memóriában a haverom kódjában szerintem ami hatással lehet a bufferekre.
   
Seeting - Törzstag | 2306 hsz       Online status #122908   2009.11.23 09:58 GMT+1 óra  
Így is elszáll:

Kód:
if (glIsEnabled(GL_VERTEX_ARRAY)) {glDisableClientState(GL_VERTEX_ARRAY);}
    if (glIsEnabled(GL_COLOR_ARRAY)) {glDisableClientState(GL_COLOR_ARRAY);}
    if (glIsEnabled(GL_BLEND)) {glDisableClientState(GL_BLEND);}
    if (glIsEnabled(GL_TEXTURE_COORD_ARRAY)) {glDisableClientState(GL_TEXTURE_COORD_ARRAY);}
     glEnableClientState(GL_VERTEX_ARRAY);
        glBindBuffer(GL_ARRAY_BUFFER, t);
        glVertexPointer(3, GL_FLOAT, 0, 0);
        glDrawArrays(GL_TRIANGLES, 0, 3);
        glBindBuffer(GL_ARRAY_BUFFER,0);
        glDisable(GL_VERTEX_ARRAY);
   
syam - Törzstag | 1491 hsz       Online status #122907   2009.11.23 09:55 GMT+1 óra  
Próbálj minden létező arrayt tiltani (gldisableclientstate) kivéve a vertex_arrayt...
alias aalberik
   
Seeting - Törzstag | 2306 hsz       Online status #122904   2009.11.23 09:21 GMT+1 óra  
Idézet
syam :
Ez egyre érdekesebb....

Próbáltad már GL_STATIC_DRAW-val?
Egy OGL contextben használod a vbokat?



A nehe-s első tutorial kódra építek mindent. Linuxosra. GLX ablak.
Ott ez van:
/* create a GLX context */
GLWin.ctx = glXCreateContext(GLWin.dpy, vi, 0, GL_TRUE);

Ehhez nem nagyon értek, azért kopiztam onnan.

Idézet
proof88 :
csinálj egy új projektet, a lehető legkevesebb kóddal és próbáld ott reprodukálni a hibát



Nem csinálok, mert tudom, hogy úgy megy. Összeraktuk a kódunkat haverommal és mégis az enyémnél száll el (a rajzolásnál).
   
proof88 - Törzstag | 528 hsz       Online status #122903   2009.11.23 09:18 GMT+1 óra  
csinálj egy új projektet, a lehető legkevesebb kóddal és próbáld ott reprodukálni a hibát
   
syam - Törzstag | 1491 hsz       Online status #122902   2009.11.23 09:07 GMT+1 óra  
Ez egyre érdekesebb....

Próbáltad már GL_STATIC_DRAW-val?
Egy OGL contextben használod a vbokat?
alias aalberik
   
Seeting - Törzstag | 2306 hsz       Online status #122891   2009.11.23 08:18 GMT+1 óra  
Már simán csak ennél is elszáll:

Initbe:

Kód:
    glGenBuffers(1,&t);
    GLfloat v[9];
    v[0]=-1;v[1]=-1;v[2]=0;
    v[3]=1;v[4]=-1;v[5]=0;
    v[6]=0;v[7]=1;v[8]=0;
    glBindBuffer(GL_ARRAY_BUFFER,t);
    glBufferData(GL_ARRAY_BUFFER, sizeof(v), v, GL_DYNAMIC_DRAW);


A Loopba:

Kód:
        glEnableClientState(GL_VERTEX_ARRAY);
        glBindBuffer(GL_ARRAY_BUFFER, t);
        glVertexPointer(3, GL_FLOAT, 0, 0);
        glDrawArrays(GL_TRIANGLES, 0, 3);


És nem tudom, hogy hol hibázik és miért... Segfault a drawarraysnél.
   
Thrall - Törzstag | 609 hsz       Online status #122716   2009.11.22 09:06 GMT+1 óra  
hello, csak egy rövid kérdés: Ha a void glutLeaveGameMode(); ot meghívom kilépés előtt, a gépem felbntása akkora lesz, mint a programomban.
Nincs valami függvény, ami mindent visszaállít kilépés előtt?
Naná, hogy most jöttem rá... Visszavonva a kérdés...

Ezt a hozzászólást Thrall módosította (2009.11.22 09:18 GMT+1 óra, ---)
Jatekfejlesztes.hu közös projekt: próbálunk összerakni egy olyan csapatot, akik együtt el tudnak készíteni egy komolyabb játékot megfelelő minőségben. Érdekel?
Link:
JF.hu közös projekt
http://frogbonegame.uw.hu/
   
syam - Törzstag | 1491 hsz       Online status #122577   2009.11.21 04:47 GMT+1 óra  
Próbálj meg csak egy háromszöget renderelni, hogy ugyis elszáll-e.
Ha nem, akkor nem minden buffered uolyan nagy,
ha igen, akkor valamelyik buffer rosszul van csatolva.
alias aalberik
   
Seeting - Törzstag | 2306 hsz       Online status #122535   2009.11.20 10:21 GMT+1 óra  
Kód:
       glDrawArrays(Objects[i]->getVMODE(), Objects[i]->getVFIRST(), Objects[i]->getVCOUNT());

        glBindBufferARB(GL_ARRAY_BUFFER_ARB,0);
        glBindTexture(GL_TEXTURE_2D, 0);


Erre gondoltál? Mert ilyet csinálok és még így is crashel.
   
Kuz - Törzstag | 4455 hsz       Online status #122529   2009.11.20 07:38 GMT+1 óra  
Do, or do not. But do not try!
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???

   
Seeting - Törzstag | 2306 hsz       Online status #122528   2009.11.20 07:31 GMT+1 óra  
I'll try this.
   
syam - Törzstag | 1491 hsz       Online status #122452   2009.11.19 09:59 GMT+1 óra  
Nem ereszti el, hanem azt mondja a gpu-nak, hogy a mostantól megadott pointerek a kliens oldalra vonatkoznak. Az egész addig megadott pointereket nem bántja.
Ugyanez vonatkozik a drawelements-re is.
alias aalberik
   
Seeting - Törzstag | 2306 hsz       Online status #122449   2009.11.19 09:32 GMT+1 óra  
a BindBuffer(0) elereszti az összes VBO-t?
   
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]