játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5441
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:    2186
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]
borsi - Tag | 180 hsz       Online status #162839   2011.09.07 13:22 GMT+1 óra  
Ja tényleg az utolsó nulla paraméteremen valahogy átsiklottam

   
syam - Törzstag | 1491 hsz       Online status #162837   2011.09.07 13:20 GMT+1 óra  
Úgy rajzolsz, hogy (void*)(indices + 300).

De ha nincs kiszámolva a vertex index range, akkor a sima gldrawelementset használd.
alias aalberik
   
Geri - Törzstag | 2186 hsz       Online status #162836   2011.09.07 13:18 GMT+1 óra  
const GLvoid *indices

   
borsi - Tag | 180 hsz       Online status #162835   2011.09.07 13:17 GMT+1 óra  
De akkor hogyan rajzolok mondjuk a 300. indextől? Mert a start ezek szerint nem azt jelöli, hogy hanyadik indextől indul a rajzolás.

   
syam - Törzstag | 1491 hsz       Online status #162828   2011.09.07 13:08 GMT+1 óra  
A start és end azt mondja meg, h a kirajzolandó mesh index listájában mi a min. és max. vertex index érték.
Ez pedig nem korlátoz semmit csak a gpunak segít optimalizálni.
alias aalberik
   
Geri - Törzstag | 2186 hsz       Online status #162823   2011.09.07 13:00 GMT+1 óra  
Pont úgy, ahogy egyet

   
borsi - Tag | 180 hsz       Online status #162811   2011.09.07 12:32 GMT+1 óra  
void glDrawRangeElements
(GLenum mode
, GLuint start
, GLuint end
, GLsizei count
, GLenum type
, const GLvoid *indices
);

Két napon keresztül kerestem a lehetséges hibákat a konverteremben, mire rájöttem, hogy semmi baja, csak félreértettem a fenti metódus paramétereit
Eddig azt hittem, hogy a start és az end az index tömbön belüli pozíciókat jelölik, míg a count a rajzolás során felhasznált vertexek számát (tehát pl egy GL_TRIANGLE kockánál 24-et). Most hogy újra elolvastam a specifikációt, azt már tudom, hogy a count az a kirajzolt vertexek száma (kockánál 36). Viszont hogy ha a start és az end a minimum és maximum értéket jelölik az index tömbben, hogy lehet egy EBO-ba több mesh indexeit feltölteni?

   
Parallax - Tag | 574 hsz       Online status #162204   2011.09.01 16:30 GMT+1 óra  
"glBegin helyett VBO"-> Jól csináltad Csoki bácsi, kemény vagy!

   
DMG - Szerkesztő | 3172 hsz       Online status #162196   2011.09.01 15:08 GMT+1 óra  
Újabb szegénységi bizonyítvány.
-----------------------------------------
Dont Listen to the Naysayers
   
ddbwo - Tag | 1625 hsz       Online status #162192   2011.09.01 14:52 GMT+1 óra  
Biztonság kedvéért lett leírva a gluLookAt() magyarázata, hátha mégis azt látja könnyebbnek valaki.

Még nem teszteltem sebességben, de sztem mindegy hogy 0-hoz ad hozzá, vagy egy már meglévő számhoz adja hozzá a többit, mert mindenképpen vannak változások ugyanazokban az értékekben. Nagyjából ugyanannyit kellhet számolni, ha belegondolok a térgeometriába. De ez úgy is részlet kérdés...
Abban az esetben számíthat, ha először mindent ténylegesen is nullára állít és nem csak a felül írásnál számol nulláról a behelyettesítések helyett és a push-pop sem emelteti át a meglévő adatokat arra a helyre, ahol számol vele. Mondjuk ezt nem tudom hogy megy odabent pontosan.

Én kezdőként a glulookat-et használtam, aztán megcsináltam a poposat, aztán megint azt használom tesztekhez. Persze az first person forgáshoz kell bónusz metódus így is, amit könnyebb a glulookat-tel használni. És lehet rá camera objektumot is alapozni. És a playstation-ös "target"követés is simább vele.

---
A Begin - End nél ott van az "// akár". Javasolhatnék VBO-t is ahhoz a kérdéshez, hogy "miért nem mozognak külön az objektumok".
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
   
DMG - Szerkesztő | 3172 hsz       Online status #162183   2011.09.01 14:31 GMT+1 óra  
jahh igen, azt a részt én már ignoráltam.

Nade az NVidianak még eladható az ötlet.
-----------------------------------------
Dont Listen to the Naysayers
   
Parallax - Tag | 574 hsz       Online status #162182   2011.09.01 14:29 GMT+1 óra  
Ez a glBegin-glEnd se valami performanciás dolog. Ha szándékosan lassítani kell a renderelést, akkor ddwbo kolléga módszerei jók lehetnek, de egyébként mobilon már nincs is glBegin-glEnd gondolom nem véletlenül.

   
DMG - Szerkesztő | 3172 hsz       Online status #162178   2011.09.01 14:22 GMT+1 óra  
Abban az esetben ki lehet kerülni, ha, ahogy a kolelga mondja, minden objektum rajzolása elött kvázi a nulláról beállítjuk az egész jelenet nézetét. Persze ez előbb utóbb kaotikus lesz, felesleges szorzás műveletekkel jár, és a többi.
-----------------------------------------
Dont Listen to the Naysayers
   
syam - Törzstag | 1491 hsz       Online status #162176   2011.09.01 14:14 GMT+1 óra  
Kezdőnek push / pop párossal a legegyszerűbb ezt megoldani.

A glulookat pedig jellemzően egy glmultmatrix + gltranslate ergo a push / popot így sem lehet kikerülni.
alias aalberik
   
DMG - Szerkesztő | 3172 hsz       Online status #162175   2011.09.01 14:14 GMT+1 óra  
Nem kell bemutatni a LookAt() metódust, köszi!

Viszont tök felesleges és pazarló minden objektum rajzolása előtt beállítani, Bőven elég egyszer a render elején, utána meg ott a mátrix verem.
-----------------------------------------
Dont Listen to the Naysayers
   
ddbwo - Tag | 1625 hsz       Online status #162170   2011.09.01 13:52 GMT+1 óra  
Ez így igaz, nullázza. Viszont a glu erre ad megoldást, ha van glu. Illetve 2D rendszerben könnyű a koordinátákat eltolni.

glLoadIdentity();

gluLookAt( cam.pos_x, cam.pos_y, cam.pos_z, cam.view_x, cam.view_y, cam.view_z, 0.0, 1.0, 0.0 );

// float-ban megadva

stb..stb
---
ahol az első három a kamera pozíciója, a második három ahova néz a kamera, a harmadik három a kamera normálja. ami alap esetben stabil 0.0, 1.0, 0.0 lenne, hogy előre nézzen a kamera, inkább az oldal hajláshoz jó módosíthatóra berakni.
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
   
DMG - Szerkesztő | 3172 hsz       Online status #162166   2011.09.01 13:33 GMT+1 óra  
Ezzel a megoldással az a baj, hogy szétcseszi az eredeti nézeti transzformációkat, kvázi a kamera beállítást., szóval nem igazán rugalmas.

Szóval a mátrix verem használata az ami inkább használható.
-----------------------------------------
Dont Listen to the Naysayers
   
ddbwo - Tag | 1625 hsz       Online status #162165   2011.09.01 13:27 GMT+1 óra  
Idézet
levi1224 :
Hali!
Lenne egy problémám. A baj az hogy létrehozok kettő objektumot 2D-ben. Én az egyiket szeretném mozgatni, de mindegyiket mozgatja glTranslatef(); függvénnyel. Mit csinálok rosszul?
Mi a megoldás?



Egy másik lehetséges megoldás. Teljesen különálló és alap szinten megérthető objektumhoz:

glLoadIdentity(); // új tárgy jön.. ez nullázza a változtatásokat

glTranslatef( cucc1.x, cucc1.y, cucc1.z );

glBegin(); // akár
...
glEnd();

glLoadIdentity(); // új tárgy jön.. ez nullázza a változtatásokat

glTranslatef( cucc2.x, cucc2.y, cucc2.z );

glBegin(); // akár
...
glEnd();
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
   
Parallax - Tag | 574 hsz       Online status #162149   2011.09.01 11:31 GMT+1 óra  
Idézet
levi1224 :
Hali!
Lenne egy problémám. A baj az hogy létrehozok kettő objektumot 2D-ben. Én az egyiket szeretném mozgatni, de mindegyiket mozgatja glTranslatef(); függvénnyel. Mit csinálok rosszul?
Mi a megoldás?


Egy lehetséges megoldás a pop és push, hogy megmaradjon az állapota az adott objektumnak. Feltéve, hogy arrays-el rajzolsz:
Kód:
void Sprite::Update(double deltaTime)
{
    glPushMatrix();
        glTranslatef(position.x, position.y, 0.0f);
        glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
    glPopMatrix();
}

   
levi1224 - Tag | 12 hsz       Online status #162148   2011.09.01 10:56 GMT+1 óra  
Hali!
Lenne egy problémám. A baj az hogy létrehozok kettő objektumot 2D-ben. Én az egyiket szeretném mozgatni, de mindegyiket mozgatja glTranslatef(); függvénnyel. Mit csinálok rosszul?
Mi a megoldás?

   
Pretender - Törzstag | 2498 hsz       Online status #160357   2011.08.20 22:22 GMT+1 óra  
Jó, hát sejtettem, hogy nem feltétlen azt kell használni, csak mondtam, hogy ha pl. debug objecteket akarok kirajzolni, akkor az tök egyszerű.

   
DMG - Szerkesztő | 3172 hsz       Online status #160310   2011.08.20 17:34 GMT+1 óra  
glBegin() glEnd() rajzolást gyorsan felejtsd is el.

Amúgy tényleg tök egyszerű, meg nem kell semmit redundánsan tárolnod vele, mint mondjuk egy DrawArray() vagy DrawElement()-el de a lehető leglassabb módszer.
-----------------------------------------
Dont Listen to the Naysayers
   
Pretender - Törzstag | 2498 hsz       Online status #160308   2011.08.20 17:31 GMT+1 óra  
Mind1, most valószínűleg amúgy más baja van a cuccnak... már' a gépnek...
Ami eddigi pozitívum számomra az openglben, az az, hogy marha egyszerűen lehet primitíveket kirajzolni. Lehet, hogy directxben is, de itt glBegin, glEnd között 3 glVertex3f, és már ott is volt egy háromszög

   
Parallax - Tag | 574 hsz       Online status #160298   2011.08.20 16:39 GMT+1 óra  
Lassan át kell állni OpenCL/CUDA-ra, addig meg elszórakozni mindegy úgyis.

   
Pretender - Törzstag | 2498 hsz       Online status #160297   2011.08.20 16:37 GMT+1 óra  
Ja hoppá, az 610-612 akart lenni
Nem álltam át, csak gondoltam belenézek, hogy hogy is van ez a cucc. Annyira azért nem tetszik... De minden bizonnyal használható, és működik is, de nekem így első körben nem jött be.

   
Parallax - Tag | 574 hsz       Online status #160296   2011.08.20 16:36 GMT+1 óra  
Lehet, hogy időnként elfárad és lejjeb veszi a frissítést. Egyébként nem szokott, biztos driver függő is a dolog, vagy valami progi zavar be a háttérben. A sötét oldallal vigyázni kell, mert könnyen fény derülhet a zsiványságra.

   
DMG - Szerkesztő | 3172 hsz       Online status #160295   2011.08.20 16:29 GMT+1 óra  
Mi történt, át állsz a sötét oldalra?

Egyébként még sosem figyeltem meg, hogy mit művel egy üres ablak, de ha ahogy írod 612-612 között ugrál, akkor az nem is ugrálás.
-----------------------------------------
Dont Listen to the Naysayers
   
Pretender - Törzstag | 2498 hsz       Online status #160293   2011.08.20 16:21 GMT+1 óra  
Az természetes, hogy egy üres ogl-es ablaknál sose áll meg fixre az fps? (dx-esnél megállt 620 körül, itt 612-612 között ugrál másodpercenként többször (a fraps-es fps számláló csak úgy "ugrál" )
Sőt... néhány indításnál megáll 580-90 körül, fel se megy 600 fölé, azután meg vígan..

   
DMG - Szerkesztő | 3172 hsz       Online status #159961   2011.08.18 06:46 GMT+1 óra  


Bazz leesett, tárgytalan, tök jogos a torzulás, már csak az a kérdés, hogy amit én teszek ellene, az elegáns-e vagy sem.
-----------------------------------------
Dont Listen to the Naysayers
   
DMG - Szerkesztő | 3172 hsz       Online status #159819   2011.08.16 21:42 GMT+1 óra  
Na kellene egy kis help, félig medig OGL igazábós Shader abban is OGSL.

Szóval BillBoard shaderrel szórakozok.

Átadoka shadernek többek között egy ModelView matrixot, meg a textúra koordinátákat.

Na most az alap elképzelés, hogy a billboard vertex pozícióját a textúra koordniátákból nyerem ki. Ehhez előbb a modelview matrixból képzek egy középpont vektort, és ehhez képest eltolom a négy vertexet. Ez rendben is van, frappánsan működik a billboard, igaz a kirajzolás iránya kicsit megzavart, y koordinátán kellett egy -1-es szorzás, de ez mellékes, viszont a kirajzolt billboard, nem négyzet, hanem téglatest, mégpedig a képaránnyal megegyező arányú. Ez így normális, ha a textúrakoordinátákkal számolok, és ezt le kell kezelni a shaderben, vagy valamit elcsesztem?

És ha már így koptattam a számat be is szúrom ide.

Kód:
uniform mat4 u_ViewMatrix;
uniform float u_Size;
attribute vec2 a_TextureCoord;
varying vec2 v_TextureCoord;
varying vec3 v_VertexCoord;
varying vec4 v_Position;

void main() {
  v_TextureCoord = a_TextureCoord;
  v_Position =  u_ViewMatrix * vec4(0.0,0.0,0.0,1.0);
  v_VertexCoord = (vec3(a_TextureCoord[0] - 0.5, (a_TextureCoord[1] - 0.5) * -1.0 , 0.0));
  v_VertexCoord = v_VertexCoord * u_Size;
  gl_Position = v_Position + vec4(v_VertexCoord, 0.0);
}


Ha kiiktatok mindent, csak a textúra koordinátát használom, akkor is csinálja, tehát nem a mátrixommal van a baj.

tudom a v_Position értékadása gáz, de átmeneti.
-----------------------------------------
Dont Listen to the Naysayers
   
DMG - Szerkesztő | 3172 hsz       Online status #159687   2011.08.15 20:00 GMT+1 óra  
Idézet
Eldor :
A texturat mikor hozod letre es toltod be? Mert ha azelott, mielott megcsinalnad az ablakot, akkor a glGenTextures 0-t rak a textura azonositodba. A 0-as id meg hibat jelent ebben az esetben. Csak otlet, de ez nem derul ki a berakott kododbol.



Hehe, ez lett volna a másik kérdésem.
-----------------------------------------
Dont Listen to the Naysayers
   
proof88 - Törzstag | 528 hsz       Online status #159686   2011.08.15 20:00 GMT+1 óra  
extension-ök kezelése is más úgy tudom linux alatt
   
Joga - Törzstag | 1791 hsz       Online status #159681   2011.08.15 19:53 GMT+1 óra  
Sztem elég a transzponálás

OGL-ben annyit kell tudni, hogy a transzformációnál, nem a vertexből képzett sormátrixot szorozzuk be a transzformáció mátrixával, hanem a transzformáció mátrixát szorozzuk be a vertexből képzett oszlopmátrixal. Természetesen ezért a transzformációk megadásának sorrendje is ellentétes.

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

   
Pretender - Törzstag | 2498 hsz       Online status #159677   2011.08.15 19:49 GMT+1 óra  
A DX ugye balsodrású, az OGL meg jobbsodrású koordináta-rendszerrel dolgozik (vagymi)
Anno szépen megírtam a mátrixokat (perspective, lookat, stb.) dx alatt, de ugye így oglben meg nem azok vannak Az oglben a mátrixok, a dx-es mátrixok transzponáltjai, vagy egyéb trükközés is van?

szerk.:
Ja, meg mire kell ügyelni, ami platformfüggő? Nyilván az ablakozás, ogl "device" létrehozás, kezelés, ilyesmi, de ezen kívül van-e még valami, amire figyelni kell, ami más linuxon, windowson, meg egyéb helyeken? (ha mondjuk a telefontól eltekintünk, szóval nézzük csak a pc-t / esetleg pár értelmes konzolt, amin mondjuk nem "butított" ogl van)

Ezt a hozzászólást Pretender módosította (2011.08.15 19:54 GMT+1 óra, ---)

   
clarDrum - Tag | 11 hsz       Online status #159674   2011.08.15 19:41 GMT+1 óra  
Ezt nem hiszem el tényleg ez volt a baj! A program legelején töltettem be a textúrát még mielőtt létrehoztam volna az ablakot. Itt bénázok már ezzel napok óta, szétszedtem az egészet, erre egy control+x control+v megoldja az egész problémát Na erre majd ügyelni fogok a jövőben. Nagyon szépen köszönöm!!

   
Eldor - Tag | 162 hsz       Online status #159667   2011.08.15 19:26 GMT+1 óra  
A texturat mikor hozod letre es toltod be? Mert ha azelott, mielott megcsinalnad az ablakot, akkor a glGenTextures 0-t rak a textura azonositodba. A 0-as id meg hibat jelent ebben az esetben. Csak otlet, de ez nem derul ki a berakott kododbol.

   
DMG - Szerkesztő | 3172 hsz       Online status #159663   2011.08.15 18:58 GMT+1 óra  
Hát nekem, akkor így első körben nem látok semmi furcsaságot, de én rendszerint azért nem mert kiszúrja a szememet, ilyenkor szoktam ripityára kapni a kódot.
-----------------------------------------
Dont Listen to the Naysayers
   
clarDrum - Tag | 11 hsz       Online status #159660   2011.08.15 18:31 GMT+1 óra  
beszúrni felejtettem el

   
DMG - Szerkesztő | 3172 hsz       Online status #159655   2011.08.15 18:14 GMT+1 óra  
Csak beszúrni felejtetted el vagy tényelg nem engedélyezed a textúrát?

glEnable(GL_TEXTURE_2D);

Persze az is lehet, hogy a lencsém szárad kifele, és nem látom a fától az erdőt.
-----------------------------------------
Dont Listen to the Naysayers
   
clarDrum - Tag | 11 hsz       Online status #159649   2011.08.15 18:03 GMT+1 óra  
Sziasztok!
Opengl-t tanulgatom nem olyan régóta (egyelőre csak 2d), és az utóbbi időben képek (pl: png) betöltésével próbálkoztam, ehhez használtam SDL-t, de elakarom hagyni végleg és csak opengl-el szeretném megoldani a textúrák, most már csak .tga fájlok betöltését és kirajzolását. Itt ütköztem egy problémába.
Összeollóztam egy Tga betöltő kódot és egy Tga osztályt, a betöltés működik rendesen. Viszont valamiért nem tudok belőle textúrát generálni, mert amikor kiakarom rajzolni a textúrát csak egy fehér négyzet jelenik meg.

Ezt a kódot használom jelenleg textúra betöltésére Tga osztály segítségével, szerintem itt lesz a baj, csak nem tudom hogy mi:

Kód:
GLuint LoadTexture(const char *filename)
{
  GLuint format;
  GLuint texture;
  GLuint bpp; //BytesPerPixel

  //ez a Tga osztály, ezen belül tölti be magának a tga fájlt
  CTargaImage* image = new CTargaImage();

  //betöltés
  if(!image->Load(filename)) return 0;

  if(image->GetTgaHeader().bpp == 24)
  {
  format = GL_RGB;
  }
  else
  if(image->GetTgaHeader().bpp == 32)
  {
  format = GL_RGBA;
  }

  //itt elvileg minden helyesen van, mégse lesz belőle textúra csak egy fehér négyzet
  glGenTextures(1, &texture);
  glBindTexture(GL_TEXTURE_2D, texture);

  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
  glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

  glTexImage2D( GL_TEXTURE_2D,
0,
format,
image->GetWidth(),
image->GetHeight(),
0,
format, GL_UNSIGNED_BYTE, image->GetImage() );

  return texture;
}



Jelenleg így renderelném ki, de csak egy fehér négyzet jelenik meg:

Kód:
void RenderTexture(const GLuint& texture, Vector2d pos, float w, float h)
{
float x2 = pos.x + w;
float y2 = pos.y + h;

glBindTexture(GL_TEXTURE_2D, texture);

glBegin(GL_QUADS);
glTexCoord2f(0.0F, 0.0F);
glVertex2f(pos.x, pos.y);
glTexCoord2f(1.0F, 0.0F);
glVertex2f(x2, pos.y);
glTexCoord2f(1.0F, 1.0F);
glVertex2f(x2, y2);
glTexCoord2f(0.0F, 1.0F);
glVertex2f(pos.x, y2)
glEnd();
}


Viszont ha így rajzolom ki magát a Tga-t, akkor teljesen hibátlanul megjelenik a kép:

Kód:
void RenderTGA(CTargaImage* tgaImage, Vector2d pos)
{
glRasterPos2i(pos.x, pos.y);
glDrawPixels( (int)(tgaImage->GetWidth()),
(int)(tgaImage->GetHeight()),
GL_RGBA,
GL_UNSIGNED_BYTE,
tgaImage->GetImage() );
}


Elnézést, ha túl sokat írtam egyszerre vagy nem érthető. Bármilyen segítséget előre köszönök.
Üdv.

   
DMG - Szerkesztő | 3172 hsz       Online status #159474   2011.08.14 19:35 GMT+1 óra  
-----------------------------------------
Dont Listen to the Naysayers
   
borsi - Tag | 180 hsz       Online status #158767   2011.08.07 19:59 GMT+1 óra  
http://www.lighthouse3d.com/tutorials/glsl-tutorial/
Amúgy ha nem használtál még shadereket, akkor az is el fog tartani egy darabig, mire a fixed pipeline szintjére eljutsz (színek, egyszerű árnyalás). De persze megéri a vesződséget.

szerk.:
itt van asszem amit keresel: http://www.lighthouse3d.com/tutorials/glsl-tutorial/spot-light-per-pixel/

   
Mangal - Tag | 19 hsz       Online status #158756   2011.08.07 18:24 GMT+1 óra  
Köszi a választ!
Akkor gondolom a legideálisabb megoldás a shader lenne viszont még sosem használtam,nemtudnál mutatni valami leírást ahol leírják hogy hogyan is kell,vagy esetleg kódrészt?

   
M4 - Tag | 187 hsz       Online status #158733   2011.08.07 16:50 GMT+1 óra  
Javascripttel úgy csináltam hogy készítettem egy png-t ami középen átlátszó. A széléig pedig egyre kevésbé az.

   
Joga - Törzstag | 1791 hsz       Online status #158732   2011.08.07 16:50 GMT+1 óra  
Ha nem használsz shadert, akkor a fény nem minden pixelre, hanem minden vertexre számolódik ki, ergo vagy shadert használsz, vagy felbontod a négyzetet több kisebb négyzetre, ami sajnos eléggé pazarlás és ugyanúgy randa marad.
(ಠ ›ಠ) Stewie!

   
Mangal - Tag | 19 hsz       Online status #158729   2011.08.07 16:05 GMT+1 óra  
Helló!
Valaki tudna segíteni,hogy spotlightal hogyan lehetne egy négyzetből kivilágítani egy kört?
beállítom a irányt,pozíciót,de sehogysem sikerül normális zseblámpára hasonlító fényt csináli.

   
DMG - Szerkesztő | 3172 hsz       Online status #157423   2011.07.27 20:47 GMT+1 óra  
Idézet
ddbwo :
Kicsit meglepő hogy mennyien nem értik a stencil buffert





És én most megyek el fürödni mert felszökött a lázam, és holnap meló van.
-----------------------------------------
Dont Listen to the Naysayers
   
ddbwo - Tag | 1625 hsz       Online status #157422   2011.07.27 20:45 GMT+1 óra  
Stencil:

Na csak találni valahol egy szép GL rajzot.

A kiragadott egyes objektumra tényleg igaz ez. Ha már a végén jársz és rajzolod az objektumot. De az igazi folyamat még az elején kezdődik. Mégpedig azzal a teszttel, amire szükség van.

Kicsit meglepő hogy mennyien nem értik a stencil buffert, de ma már úgysem kell a shaderekkel spórolni.
-----

Ma kicsit becsuktam a térkapukat, kinyomtam a stencil buffer shadowt, vettem a fárattságot, és megcsináltam magamnak az OpenGL-re igazított modell formátumomat.
Még validációt is írtam hozzá, így nem lehet hiba korrupt file-nál sem. Tök jó lett

-----

Yodafon, ez tényleg jól néz ki!
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
   
Yodafon - Tag | 8 hsz       Online status #157393   2011.07.27 19:56 GMT+1 óra  
Idézet
ddbwo :
Akkor ne legyen. Senki ne próbálkozzon vele, mert nincs!!!

FELHÍVÁS!!!

Sikeresen eltereltem a figyelmet Yodafon kérdéséről, ezért elnézést kérek tőle. Ha valakinek van rá kapacitása, megérdemelne még egy pillantást.. (ha mág aktuális, de nem mondta h megoldott lenne)



Köszi szépen de már megoldottam

Az elejéről lemaradt ez a két DEFINE:
Kód:
#define GL_GLEXT_PROTOTYPES 1
#define GLX_GLXEXT_PROTOTYPES 1


Illetve kicsit átszabtam, egyszerűsítettem a progit. Mostmár megcsinálja, hogy egy én általam megadott koordinátára kirajzol egy én általam megadott színű pixelt.

Ez a szín és koordináta beállító:
Kód:
void setPixel(GLubyte* ptr,int r,int g,int b,int x,int y)
{

long int i;
    i=4*(512*(y+255)+(x+256));

     *(ptr+i)=b; //kék
     *(ptr+i+1)=g; //zöld
     *(ptr+i+2)=r; //piros
     *(ptr+i+3)=0;

}


Ez pedig a többi:
Kód:
imageData=(GLubyte*)malloc(512*4*512*sizeof(GLubyte));
memset(imageData,0, 512*512*4); //nulláza a tömböt


    // init 1 texture objects
    glGenTextures(1, &textureId);
    glBindTexture(GL_TEXTURE_2D, textureId);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 512, 512,0, PIXEL_FORMAT, GL_UNSIGNED_BYTE, (GLvoid*)imageData);

    glBindTexture(GL_TEXTURE_2D, 0);


       // create 1 pixel buffer objects, you need to delete them when program exits.
        // glBufferDataARB with NULL pointer reserves only memory space.
        glGenBuffersARB(1, pboIds);
        glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, pboIds[0]);
        glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_ARB, 4*512*512*sizeof(GLubyte), NULL, GL_STREAM_DRAW_ARB);
       glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB,0);


//köti a PBO-t
glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB,pboIds[0]);


//0-kkal tölti fel a PBO-t
glBufferDataARB(GL_PIXEL_UNPACK_BUFFER_ARB, 4*512*512*sizeof(GLubyte)  ,0, GL_STREAM_DRAW_ARB);

//lekéri a PBO tartalmára mutató mutatót a módosításhoz
GLubyte* ioMem = (GLubyte*)glMapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, GL_WRITE_ONLY_ARB);
if(ioMem)
  {
//buffer: 4*szélesség*magasság
setPixel(ioMem,40,150,160,0,0); //buffer,r,g,b,x,y

glUnmapBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB);
  }

//köti a textúrát
glBindTexture(GL_TEXTURE_2D,textureId);

//átküldi a pbo tartalmát a textura objektumba
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 512, 512, PIXEL_FORMAT, GL_UNSIGNED_BYTE,0);
//feloldja a PBO kötést
glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);


while(1)
{



glClear(GL_COLOR_BUFFER_BIT); //törli a képernyő és a mélységi buffert

    glMatrixMode(GL_MODELVIEW);

      /* reset modelview matrix to the identity matrix */
    glLoadIdentity();

      /* move the camera back three units */
     glTranslatef(0.0, 0.0, -2.0);

glBindTexture(GL_TEXTURE_2D, textureId);
    glColor4f(1, 1, 1, 1);
    glBegin(GL_QUADS);
    glNormal3f(0, 0, 1);
   glTexCoord2f(0.0f, 0.0f);
     glVertex3f(-2.0f, -2.0f, 0.0f);
  glTexCoord2f(1.0f, 0.0f);
    glVertex3f( 2.0f, -2.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f);
     glVertex3f( 2.0f,  2.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f);
    glVertex3f(-2.0f,  2.0f, 0.0f);
    glEnd();

glBindTexture(GL_TEXTURE_2D,0);

   glXSwapBuffers(dpy,win);
   XPending(dpy);
}


Bár a végén az XPending-et nem igazán értem mit csinál.

   
syam - Törzstag | 1491 hsz       Online status #157324   2011.07.27 14:07 GMT+1 óra  
Idézet
DMG :
Idézet
syam :
Tudniillik a stencil objektum nem létezik ogl-ben
De ezt ne áruld el senkinek, titok:3



Csak csendben reménykedek, hogy nem vetted komolyan, hogy én úgy gondolom hogy van.

Alapítunk egy vallási szektát? Stencil Objektum Tagadók lehetnénk.



Nyilván nem :3

Nem kell ide vallási szekta - inkább a Khronost váltsa le valaki
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]