játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5508
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
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] > 9 < [10] [15]
LugaidVandroiy - Törzstag | 504 hsz       Online status #169672   2011.11.30 06:32 GMT+1 óra  
Dropbox? Es engem is erdekelne.

   
matthew3r - Tag | 14 hsz       Online status #169671   2011.11.29 23:14 GMT+1 óra  
Szerintem sebesség, meg hasonlók szempontjából 4shared jó megoldás, de 200 mega a max fájlméret, tehát darabolni kéne. Mondjuk szinte mindenhol ekkora, tehát nem tudom van-e jobb választás.

   
DMG - Szerkesztő | 3172 hsz       Online status #169669   2011.11.29 20:14 GMT+1 óra  
Valami tárhely kéne ahova fel tudom tolni. Valaki?
-----------------------------------------
Dont Listen to the Naysayers
   
Parallax - Tag | 609 hsz       Online status #169666   2011.11.29 15:12 GMT+1 óra  
Én most a beginning android games-t lapozgatom. Aszongya: "The Android Market was opened to the public in October 2008 by Google.:
Kód:
Country    User Can Purchase Apps    Developer Can Sell Apps
Hungary   Yes                                            Yes


Aha.

   
matthew3r - Tag | 14 hsz       Online status #169657   2011.11.29 08:50 GMT+1 óra  
Engem speciel érdekelne

   
DMG - Szerkesztő | 3172 hsz       Online status #169631   2011.11.28 13:09 GMT+1 óra  
Most lőtem úgy 500 MB-nyi Android fejelsztői e-book-ot, ha érdekel valakit.
-----------------------------------------
Dont Listen to the Naysayers
   
matthew3r - Tag | 14 hsz       Online status #169537   2011.11.26 19:04 GMT+1 óra  
Az elmúlt néhány nap tanulsága, hogy hiába engedélyezem a Texture 2D-t az onSurfaceCreated eseményben, ha az onDrawFrame-en belül a textúrákat a 0. frame-ben olvasom be, akkor semmit nem ér, tehát ott kell engedélyezni, ahol betöltöm. 3 napba telt mire rájöttem.

   
Joderida - Tag | 55 hsz       Online status #169520   2011.11.26 04:00 GMT+1 óra  
Okos azaz eclipse, bár a javanak magának vannak hátrányai, C alapú nyelvek után, lásd nincs ref,out és egyéb finomságok mint C#-ban, hanem objektumot adsz át.
Egyébként valamit be kell állítani és automatán importálgat az eclipse ahogy DMG írta.

Viszont egy kérdésem is lenne, ha már írok .
A mobil döntögetésével akarom megoldani a játékom kezelését, de van egy észrevételem, hogy ez a fránya OrientationManager nem pontos adatokkal szolgál. Tehát, ha jobban megdöntöm a mobilt, akkor a balra-jobbra billentése kisebb értéket mutat, mintha magam elé tartom(merőleges az oldala a földel), elviekben ugyanolyan értéket kéne mutatnia, de mégsem ezt teszi, van erre valami fantasztikus megoldásotok erre?
ui.: Több játékban láttam, ezt a problémát, amivel nem foglalkoztak.

Ezt a hozzászólást Joderida módosította (2011.11.26 04:13 GMT+1 óra, ---)

   
DMG - Szerkesztő | 3172 hsz       Online status #169436   2011.11.24 19:55 GMT+1 óra  
És ha tudja hogy melyik kell, még be is importálja helyetted.
-----------------------------------------
Dont Listen to the Naysayers
   
LugaidVandroiy - Törzstag | 504 hsz       Online status #169432   2011.11.24 19:47 GMT+1 óra  
Ezért szeretem az Eclipse-t, az figyelmeztet arra általában, ha nincs egy csomag importálva

   
DMG - Szerkesztő | 3172 hsz       Online status #169430   2011.11.24 19:37 GMT+1 óra  
Igen, a példák erre hajlamosak, én is a neten szoktam vadászni, hogy mit kell beimportálni hozzájuk.
-----------------------------------------
Dont Listen to the Naysayers
   
bit.0x8000 - Törzstag | 574 hsz       Online status #169402   2011.11.24 14:02 GMT+1 óra  
Az mitől lehet, hogy az OpenGL ES 1.0 példában a fordító a FloatBuffer, ByteBuffer és ByteOrder-re azt mondja, hogy "cannot find symbol" ?

szerk: Ehh, csak be kellett importálni őket, de a példából ez valahogy kimaradt...

Ezt a hozzászólást bit.0x8000 módosította (2011.11.24 14:16 GMT+1 óra, ---)
   
bit.0x8000 - Törzstag | 574 hsz       Online status #169170   2011.11.21 22:25 GMT+1 óra  
Idézet
LugaidVandroiy :
Szia!

Én mind a logikát, mind a rendert statekre osztom.

Kód:
private final int STATE_MENU = 0;
private final int STATE_GAME = 1;
private final int STATE_GAMEOVER = 2;
private int gState = STATE_MENU;


És innentől meg a játék logikánál meg a renderernél is ezt csinálom:
Kód:
switch ( gState ){
case STATE_MENU:
  DrawMenu( );
  break;
case STATE_GAME:
  DrawGame( );
  break;
}


Én így csináltam meg, a célját ellátja, bár azt nem tudom, hogy mennyire hatékony minden frameban előbb végrehajtani egy elágazást, majd rajzolni. DMG több activitys módszerével hatékonyabban menne a dolog. De több munka is


Nálam State interfészek vannak (pl.: GraphicsState), amiknek van set(), unset(), update() virtuális metódosuk (Java-ban ugyebár minden az), és valahol "kint" egy GraphicsState "mutató" (asszem Java-ban az objektumok alapból így kapnak értéket), ekkor minden frame-ben csak ennyit kell mondani:
Kód:
graphicsState.update();

(Persze valahogy meg kell oldani a State-ek cserélgetését, én erre általában egy külön ControlState interfészt használok.)
   
matthew3r - Tag | 14 hsz       Online status #169164   2011.11.21 21:01 GMT+1 óra  
1.0 (Vodafone 845-öm van, tehát 2.0-val addig nem nagyon tudok próbálkozni
A gond az, hogy én is kerestem, de mindenhol a SpriteText-eset ajánlják, de majd rákeresek még egyszer.

   
DMG - Szerkesztő | 3172 hsz       Online status #169163   2011.11.21 20:50 GMT+1 óra  
Milyen Opengl-t hasznász?

Egy osztály az egész, én egyből találtam a neten egy erre alkalmasat, aztán persze azóta már kiheréltem, de 1.x alatt tökéletesen működött.
-----------------------------------------
Dont Listen to the Naysayers
   
matthew3r - Tag | 14 hsz       Online status #169162   2011.11.21 20:46 GMT+1 óra  
Nem hangzik jól. Akkor viszont megcsinálom a nagy részét, aztán valahol utolsó között majd rávetem magam, addig marad a jó öreg log.

   
DMG - Szerkesztő | 3172 hsz       Online status #169160   2011.11.21 20:39 GMT+1 óra  
Hát nagyon rövidebbet nem fogsz találni, valami dinamikus font kezelőt bele kell építened a motorba.
-----------------------------------------
Dont Listen to the Naysayers
   
matthew3r - Tag | 14 hsz       Online status #169159   2011.11.21 20:21 GMT+1 óra  
Oké, 0. frames dolog megy tökéletesen, akkor ez megoldva, köszi Most nekieshetek, hogy az egész összeálljon.

Viszont egy kérdés, bár ez még annyira nem fontos, de hátha tudtok normális megoldást. Az megvan, hogy 3D-re 2D-s hud-ot rakni, viszont azt lenne jó tudni, hogy dinamikus szöveget (pl: timert, fps számlálót) rakni rá. Statikussal nincs gond, canvas, paint, rárakom textúrára, ezt egy objektumra, és draw, viszont, ha dinamikust is így akarnám megoldani, akkor az elég rendesen erőforrászabáló lenne. Tudom van ApiDemos-nál a SpriteText, de ez elég bonyolult meg hosszú, jó lenne valami rövidebb megoldás.

   
DMG - Szerkesztő | 3172 hsz       Online status #169156   2011.11.21 20:08 GMT+1 óra  
Idézet
LugaidVandroiy :
Szia!

Én mind a logikát, mind a rendert statekre osztom.

Kód:
private final int STATE_MENU = 0;
private final int STATE_GAME = 1;
private final int STATE_GAMEOVER = 2;
private int gState = STATE_MENU;


És innentől meg a játék logikánál meg a renderernél is ezt csinálom:
Kód:
switch ( gState ){
case STATE_MENU:
  DrawMenu( );
  break;
case STATE_GAME:
  DrawGame( );
  break;
}


Én így csináltam meg, a célját ellátja, bár azt nem tudom, hogy mennyire hatékony minden frameban előbb végrehajtani egy elágazást, majd rajzolni. DMG több activitys módszerével hatékonyabban menne a dolog. De több munka is



Na valami ilyesmi az enyém is
-----------------------------------------
Dont Listen to the Naysayers
   
matthew3r - Tag | 14 hsz       Online status #169151   2011.11.21 19:47 GMT+1 óra  
Na, azért hasonlóan gondolkodunk
Lényegében most nekem is state-ekkel van megcsinálva az egész, csak ugye a gond a textúrák betöltése onSurfaceCreated-nél, mivel, ha ezt onDrawFrame-ben akarnám, akkor ugye mindig betöltené, viszont, amit DMG írt, hogy a 0. frame-ben betölteni minden state-nél a textúrákat, és többet már nem. Nem gondoltam rá, de egész jó megoldásnak tűnik.
A több activity-s tényleg szintén nem rossz, csak valahogy attól tartózkodom, nekem elég egy activity is
Köszönöm, akkor most így ez alapján megpróbálkozom a 0. frame-es dologgal, aztán megírom, hogy hogyan sikerült, esetleg később mellékelem screeneket is, csak, hogy látszódjon miről van szó

   
LugaidVandroiy - Törzstag | 504 hsz       Online status #169144   2011.11.21 19:36 GMT+1 óra  
Szia!

Én mind a logikát, mind a rendert statekre osztom.

Kód:
private final int STATE_MENU = 0;
private final int STATE_GAME = 1;
private final int STATE_GAMEOVER = 2;
private int gState = STATE_MENU;


És innentől meg a játék logikánál meg a renderernél is ezt csinálom:
Kód:
switch ( gState ){
case STATE_MENU:
  DrawMenu( );
  break;
case STATE_GAME:
  DrawGame( );
  break;
}


Én így csináltam meg, a célját ellátja, bár azt nem tudom, hogy mennyire hatékony minden frameban előbb végrehajtani egy elágazást, majd rajzolni. DMG több activitys módszerével hatékonyabban menne a dolog. De több munka is

   
DMG - Szerkesztő | 3172 hsz       Online status #169130   2011.11.21 18:54 GMT+1 óra  
Hát szerintem több féle módon is megoldható, lehet activity-k között váltani, minden activity-nek lehet saját rendere, vagy az egyik activity-ben megoldod Java-val a menüt, és csak maga a játék lenne OGL. Már én is gondolkodom, hog yhogy lenne célszerűbb én PC-n annak idején úgy oldottam meg, hogy a rendert elágazásokra oszottam, az elágazában voltak megvalósítva a különböző képernyők. Menü, pályák stb... az egyes képernyők textúráit meg a 0. frame ben töltöttem be, aztán ha megvan a betöltés, akkor mehetett a render.

Persze nem feltétlen ez a legjobb megoldás, én ilyen házibarkács fejlesztő vagyok.

De várom a jobb megoldásokat én is.
-----------------------------------------
Dont Listen to the Naysayers
   
matthew3r - Tag | 14 hsz       Online status #169125   2011.11.21 16:53 GMT+1 óra  
Üdv mindenkinek!

Mivel a Stackoverflow úgy látszik halott Androidos OpenGL témában így hozzátok fordulnék segítségért
Fejlesztek egy játékot (egyetemre, tehát az, hogy 1.0 meg hasonlók az amiatt van, bár ez utóbbi annyira nem is fontos), először úgy voltam vele, hogy a menüt megcsinálom textview-okkal, xml-lel, de ez annyira nem tetszett így gondoltam váltok és az is GL lesz.
A programom jelenleg úgy néz ki, hogy van induláskor az osztály, az onCreate-ben a setContentView-nak az az osztály van megadva amiben az érintés és billentyű lenyomást kezelem, és ebben állítom be setRenderer-nek azt az osztályt amiben a tényleges grafika van. Ebben benne van jelenleg a menü, de én úgy szeretném, hogy a kiválasztott menügomb megnyomására elinduljon a játék viszont egy másik osztályban, tehát mondjuk a setRenderernek más értéket adni (ez ugye elvileg nem lehetséges) - gondoltam arra is, hogy a menüt, játékot mindent ebben az osztályban, viszont akkor az onSurfaceCreated-ben minden textúrát be kéne olvasnom, ami 3 pályával, Skybox-szal nem fél másodperc lenne.
A kérdésem tehát, hogy ezt hogyan lehetne valahogy áthidalni, mert ez sokkal jobb megoldás lenne, mint mindent egyszerre.
Esetleg olvastam, hogy talán Handler meg ilyenek, de őszintén szólva azzal például egy percet sem foglalkoztam még, fogalmam sincs, hogy eszik-e, vagy isszák, és, hogy egyáltalán megoldás lehetne-e a problémámra.

Így első körben talán ennyi, így is elég hosszúra sikeredett (Ha meg valamit kihagytam, akkor nyugodtan lehet kérdezni). Előre is köszönöm!

   
bit.0x8000 - Törzstag | 574 hsz       Online status #169090   2011.11.21 07:29 GMT+1 óra  
Idézet
bit.0x8000 :
Egy alternatív megoldás az emulátorra...


Egyébként másnál működik a hang?
   
DMG - Szerkesztő | 3172 hsz       Online status #169086   2011.11.21 07:05 GMT+1 óra  
Mára már a legtöbb szolgáltató 2.2-vel adja a telefonokat, vagy kiadták a hivatalos frissítést. Szóval ha 2.2-re fejlesztessz, max azok esnek ki a szórásból, akik nagyon rég vették a telefont és nem akarják/tudják buherálni.
-----------------------------------------
Dont Listen to the Naysayers
   
bit.0x8000 - Törzstag | 574 hsz       Online status #169082   2011.11.20 22:46 GMT+1 óra  
Idézet
DMG :
Androidnál meg szerintem a 2.2 esetleg a 2.1 ami alá már felesleges lemenni.


Ok, de ha jól tudom, pont 2.2-nél jött be az OpenGL ES 2.0, szóval nem mindegy.
Igazából azért is kérdeztem, mert talán már utánanéztetek, hogy pl. a szolgáltatók milyen verziót adnak, milyen gyakran lehet frissíteni, ilyesmi...

Persze azért kösz a választ.
   
DMG - Szerkesztő | 3172 hsz       Online status #169080   2011.11.20 21:56 GMT+1 óra  
Én msot azon dolgozom, hogy a motor tudja ezt is, azt is, sosem lehet tudni, Vandroiy-nak pl nem megy a 2.0, ezért kezdtem átírni a motort. Nekem már egy ember is nagy kiesés.

Androidnál meg szerintem a 2.2 esetleg a 2.1 ami alá már felesleges lemenni.
-----------------------------------------
Dont Listen to the Naysayers
   
Asylum - Törzstag | 5508 hsz       Online status #169024   2011.11.20 10:52 GMT+1 óra  
OpenGL ES-böl nem sok lehetöséged van 2.0-ra érdemes.
C++ fordítóval és macival alszom
http://darthasylum.blog.hu/
   
bit.0x8000 - Törzstag | 574 hsz       Online status #169023   2011.11.20 10:15 GMT+1 óra  
Tud valaki egy jó és aktuális tutorial-t androidos Java /OpenGL programozáshoz?
Illetve milyen Android és OpenGL verziókra érdemes fejleszteni (mint alsó határ) ?
   
LugaidVandroiy - Törzstag | 504 hsz       Online status #168891   2011.11.18 10:51 GMT+1 óra  
Húúú, nagyon szépen köszönöm én is! Már telepítem is

   
DMG - Szerkesztő | 3172 hsz       Online status #168883   2011.11.18 09:27 GMT+1 óra  
Ez jó, ideje volt.

Na meg is nézem majd mit tud talán lehet vele rendes videót is csinálni az app-ról.

Kösz!
-----------------------------------------
Dont Listen to the Naysayers
   
bit.0x8000 - Törzstag | 574 hsz       Online status #168881   2011.11.18 09:04 GMT+1 óra  

Ezt a hozzászólást bit.0x8000 módosította (2011.11.21 07:29 GMT+1 óra, ---)
   
Joderida - Tag | 55 hsz       Online status #167943   2011.11.04 11:52 GMT+1 óra  
"Megoldva"
itt

   
Joderida - Tag | 55 hsz       Online status #167931   2011.11.04 10:52 GMT+1 óra  
Sziasztok!
Megakadtam egy Androidos játék fejlesztése során, röviden egy vektorban tárolom az objektumom részeit-egy-két adatot róla.
Ezt hívom meg:
Kód:
modell_vector.add(new Modell_part(modell_part_name, My_buffers, points, _nrOfIndices));

És itt a kód amivel gondom van:
Kód:
public Modell_part(String modell_part_name,
Loader_buffer_class My_buffers, Modell_points points,
int _nrOfIndices) {
this.modell_part_name = modell_part_name;
this.indexBuffer = My_buffers._indexBuffer;
this.normalBuffer = My_buffers._normalBuffer;
this.texturBuffer = My_buffers._texturBuffer;
this.vertexBuffer = My_buffers._vertexBuffer;
this.mshiarray = My_buffers._mshiarray;
this.mambarray = My_buffers._mambarray;
this.mdiffarray = My_buffers._mdiffarray;
this.mspecarray = My_buffers._mspecarray;
this._modell_part_center_point = points._modell_center_point;
this._modell_part_left_point = points._modell_left_point;
this._modell_part_right_point = points._modell_right_point;
this._modell_part_top_point = points._modell_top_point;
this._modell_part_bottom_point = points._modell_bottom_point;
this._modell_part_front_point = points._modell_front_point;
this._modell_part_back_point = points._modell_back_point;
this.nrOfIndices = _nrOfIndices;

(A points,My_buffers azok objektumok)
Mint lehet látni tárolom a vertexeket, indexeket, normálokat, textúra koordinátákat, a nevét a modellnek, és amivel gondom van a "nevezetes pontjait", amit egy algoritmussal számolok ki.

A problémám az az lenne, hogy, ha a modellem több részből áll, akkor fellülíródnak ezek a pontok, de a bufferek azok megmaradnak. Számomra érthetetlen módon, mivel mindegyiket egyformán kezelem, csak az a külömbség, hogy az egyik Buffer típusú a másik meg (egy dimenziós) tömb.
pl.:
Tehát, ha a vektor(i) modell résznek [0.0,0.0,0.0]-k voltak középpontjának a koordinátái, akkor a következő modell rész betöltése a vetkorba felülírja azt(vektor)(i+1)-nek adom a [10.0,10.0,10.0]-t:
vektor(i+1) modell rész [10.0,10.0,10.0]
(vissza nézve az i. elemet)
vektor(i) modell rész [10.0,10.0,10.0]

Ha ismét hozzáadok egy elemet pl.: [20.0,20.0,20.0]
akkor így alakulnak:
vektor(i) [20.0,20.0,20.0]
vektor(i+1) [20.0,20.0,20.0]
vektor(i+2) [20.0,20.0,20.0]
és így tovább...

Viszont a Buffereket nem írja felül, csak a pontokat.
Lehet már én nem látom a fát az erdő miatt, remélem tudtok segíteni, köszönöm előre is.
Küldtem egy képet a loggolásról is, köszönöm a válaszokat előre is.
2535-log.jpg

   
LugaidVandroiy - Törzstag | 504 hsz       Online status #166645   2011.10.12 17:17 GMT+1 óra  
Pár közérdekű infó, ami mást is érinthet, aki tabletre optimalizál canvas-alapú játékot.
Nem nehéz dolog, csak időigényes belőni a megfelelő arányokat, amin jól is néz ki a játék, nem is esik darabokra a sprite, és a funkcionalitását is megőrzi. Mint mindig, most is erősen (illetve erősebben ezek után) tanácsolom, hogy a koordinátáknak ne fix értéket adjatok, hanem egy adott pontra relatívan hivatkozzatok. Lehet evidens, de nekem a legelején nem volt az; szerencsére félúton az egészet átírtam százalékos, illetve relatív rendszerre.
A tabletekben erősebb GPU van, tessék nyugodtan használni canvas esetében is. Anti-aliasing, és bitmap filter, és máris sokkal szebb, és élesebb képe van.
Ami a telefonon teljes képernyőn jól néz ki, az nem biztos, hogy jól fog kinézni a tableten is.

   
Joderida - Tag | 55 hsz       Online status #166576   2011.10.11 18:04 GMT+1 óra  
Megválaszolom a magam kérdést akkor .
A 2. kódomból
Kód:
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,
GL10.GL_NEAREST);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
GL10.GL_NEAREST);

a fentebbi helyett ezt kell használni:
Kód:
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR_MIPMAP_NEAREST);
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR_MIPMAP_NEAREST);

És a tesztelése is nagyon egyszerű, egy nagyobb sima sakktáblát betöltesz a normál textúra betöltéssel, majd megnézed ugyanazt a textúrát mippmappeléssel. Nagyon is látszik a különbség. Csak idő kérdése és rájövök a dolgokra.

   
Joderida - Tag | 55 hsz       Online status #166423   2011.10.08 11:56 GMT+1 óra  
Kód:
public void loadtexture(GL10 gl, Context mContext, String map_source) {
try {
InputStream is = mContext.getAssets().open(map_source);
Bitmap bitmap2 = BitmapFactory.decodeStream(is);
is.close();
Matrix flip = new Matrix();
flip.postScale(1f, -1f);
Bitmap bitmap = Bitmap.createBitmap(bitmap2, 0, 0,
bitmap2.getWidth(), bitmap2.getHeight(), flip, true);
bitmap2.recycle();
gl.glGenTextures(1, textures, 0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);
gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_GENERATE_MIPMAP, GL11.GL_TRUE);//Ezt kell nézni
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
bitmap.recycle();
} catch (IOException e) {
// Should never happen
}
}

Lehet, hogy most butaságot csinálok/tam, de a kódom így néz ki a //Ezt kell nézni részt jól csináltam, vagy találtam egy másik kódot a neten, amit kicsit átírogattam, (for ciklusból break hm ki írta ezt, nah majd átírom én ezetet while-osra ? ):
Kód:
public void loadtexture(GL10 gl, Context mContext, String map_source) {
try {
InputStream is = mContext.getAssets().open(map_source);
Bitmap original_bitmap = BitmapFactory.decodeStream(is);
is.close();
Matrix flip = new Matrix();
flip.postScale(1f, -1f);


Bitmap bitmap = Bitmap.createBitmap(original_bitmap, 0, 0,
original_bitmap.getWidth(), original_bitmap.getHeight(), flip, true);
original_bitmap.recycle();

gl.glGenTextures(1, textures, 0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]);

gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER,
GL10.GL_NEAREST);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER,
GL10.GL_NEAREST);

for(int level=0, height = bitmap.getHeight(), width = bitmap.getWidth(); true; level++) {
        GLUtils.texImage2D(GL10.GL_TEXTURE_2D, level, bitmap, 0);
       
        if(height==1 && width==1) break;
       
        width >>= 1; height >>= 1;
        if(width<1)  width = 1;
        if(height<1) height = 1;
       
        Bitmap bmp2 = Bitmap.createScaledBitmap(bitmap, width, height, true);
        bitmap.recycle();
        bitmap = bmp2;
    }
bitmap.recycle();
} catch (IOException e) {
// Should never happen
}
}

Még egy kérdésem van, honnan tudom azt, hogy valóban mipmapelve van a textúra, le lehet-e ezt ellenőrizni? Érdekelne, hogy mennyivel gyorsabb így, mint, ha csak a textúrát tölteném be.

   
LugaidVandroiy - Törzstag | 504 hsz       Online status #166179   2011.10.04 19:18 GMT+1 óra  
Iiiistenem, rájöttem... akkora facepalm az egész, hogy kilométerekre elhalltaszik a csattanás..

Kód:
Camera.PreviewCallback previewCallback = new Camera.PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {

if (iScanBegin){
int width = camera.getParameters().getPreviewSize().width;
int height = camera.getParameters().getPreviewSize().height;

int[] argb8888 = decodeYUV420SP(data, width, height);

bCapturedFrame = Bitmap.createBitmap(argb8888, width, height, Config.ARGB_8888);

Toast.makeText(context, "", Toast.LENGTH_SHORT).show();
iScanBegin = false;
}
invalidate();
}
};


INVALIDATE!!!


Köszönöm a segítséget azért szálasítva lesz a konverzió, de az még ráér jelenleg. Így is fél másodperc alatt végigmegy rajta.

   
Joderida - Tag | 55 hsz       Online status #166178   2011.10.04 19:15 GMT+1 óra  
Lehet, hogy hülyeséget mondok, de próbáltad már szálkezeléssel. Egy próbát megér

   
DMG - Szerkesztő | 3172 hsz       Online status #166148   2011.10.04 17:04 GMT+1 óra  
Sajnos ezzel a kérdéskörrel még nem foglalkoztam.
-----------------------------------------
Dont Listen to the Naysayers
   
LugaidVandroiy - Törzstag | 504 hsz       Online status #166137   2011.10.04 16:04 GMT+1 óra  
Valaki okos segíthetne, mert engem már az ideggörcs kerülget. Van egy alkalmazás, amin most ügyködünk, aminek a lényege az, hogy van egy kamera preview, meg néhány bitmap ráfektetve. ez eddig tökéletesen működik, nem is olyan nagy szám. Viszont az alkalmazás miatt ki kéne merevíteni a képet.

A kódom azt csinálja, hogy minden megjelenített framet dekódol, majd bitmapba tol. Ez idáig tök jó is, csak valamiért nem hívódik meg a callback, vagy én nem tudom mi a halál van. a progi indításakor ez látszódik:


10 percig néztem, a bitmap meg sem mozdult. Kikapcsoltam a kijelzőt, majd visszatérve ezt láttam:


Tehát működik is, meg nem is. a callback valamiért nem hívódik meg. Mit csinálhatok rosszul?
A kódom itt van egyébként:
Kód:
public void surfaceCreated(SurfaceHolder holder) {
        mCamera = Camera.open();
        mCamera.setPreviewCallback(previewCallback);
    }

Kód:
Camera.PreviewCallback previewCallback = new Camera.PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera) {

int width = camera.getParameters().getPreviewSize().width;
int height = camera.getParameters().getPreviewSize().height;

int[] argb8888 = decodeYUV420SP(data, width, height);

bCapturedFrame = Bitmap.createBitmap(argb8888, width, height, Config.ARGB_8888);
}
};



Szerk: meghívódik, csak a bitmap valamiért nem változik... nem értem én ezt.

Ezt a hozzászólást LugaidVandroiy módosította (2011.10.04 16:40 GMT+1 óra, ---)

   
lezli01 - Tag | 190 hsz       Online status #165955   2011.10.02 21:46 GMT+1 óra  
én így csinom a textúrabetöltést, ez elkerüli, hogy a keresett resource esetén a bitmapom null legyen, holott a keresett resource megtalálható a mappák között

Kód:
int[] texture = new int[ 1 ];
gl.glGenTextures( 1, texture, 0 );

gl.glBindTexture( GL10.GL_TEXTURE_2D , texture[ 0 ] );

gl.glTexParameterf( GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR );
gl.glTexParameterf( GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR );

Bitmap image = ( ( BitmapDrawable ) context.getResources().getDrawable( ResourceId ) ).getBitmap();

GLUtils.texImage2D( GL10.GL_TEXTURE_2D, 0, image, 0 );

image.recycle();
   
DMG - Szerkesztő | 3172 hsz       Online status #165827   2011.10.01 17:51 GMT+1 óra  
Hát borulátás az van, látom.

Majd lesz nyílt béta, aztán lesznek itt remélem változatos vasak.
-----------------------------------------
Dont Listen to the Naysayers
   
Parallax - Tag | 609 hsz       Online status #165826   2011.10.01 17:23 GMT+1 óra  
Alacsonyabb kategóriás telefonok érzéketlenebbek a hibákra. A szimulátor, meg fene tudja mit ad vissza. Nálam a textúra 2 hatványa kell legyen című dolog hiánya valamin ment valamin nem. Ha legalább nincs egy alacsony-közepes-elit kombód, akkor esélytelen kitesztelni a hibákat, de még így is bele lehet futni. Kíváncsi vagyok mik a szívások végeredményei.

   
DMG - Szerkesztő | 3172 hsz       Online status #165805   2011.10.01 00:29 GMT+1 óra  
Na kérem, újabb egy napos szopás eredménye a következő bug, vagy fícsőr, még nem jöttem rá.


Szóval OpenGL ES1.x-ben amennyiben a MainFest.xml-ben be van állítva, egy

Kód:
<uses-sdk android:minSdkVersion="8" />


(elvileg 3-as API-tól felfelé csinálja)

Akkor a textúra betöltés nem üzemel a megszokott módon.

Kód:
this.mBitmap = BitmapFactory.decodeResource(res, R.drawable.crate);


Ha így töltjük be a textúrát, akkor fehér polygonokat fogunk kapni a textúra helyett.

A következő módszer tűnik használhatónak:

Kód:
InputStream is = c.getResources().openRawResource(R.drawable.crate);   
    this.mBitmap = null;
        try {
        this.mBitmap = BitmapFactory.decodeStream(is);
     
        } finally {
            //Always clear and close
            try {
                is.close();
                is = null;
            } catch (IOException e) {
            }
        }


És most megyek alszom, mert tele lett a hócipőm.


EDIT: Ja még annyi, a jelenség azért szemét dolog, mert az emu-ban nem jön elő, ott szépen megjelenik a textúra az eredeti kóddal is.
-----------------------------------------
Dont Listen to the Naysayers
   
syam - Törzstag | 1491 hsz       Online status #165690   2011.09.29 16:08 GMT+1 óra  
Azt hiszem ott a
Kód:
glTexParameteri (GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);


él.

Semmi mást nem kell tenni, mint feltölteni a 0. mipmap szintet (szóval a szokásos) azt az egy sort beírni és beállítani a szűrést.
alias aalberik
   
Joderida - Tag | 55 hsz       Online status #165689   2011.09.29 16:05 GMT+1 óra  
Sajnos ES 1x-es még

   
syam - Törzstag | 1491 hsz       Online status #165688   2011.09.29 15:46 GMT+1 óra  
Idézet
Joderida :
A Mip map betöltése 2 módon lehetséges:mip_map_opengl
Ti melyiket ajánlanátok? Melyik jobb androidra, ha magától csinálja az opengl, vagy, ha én kényszerítem rá a tutit.



Ez ahogy nézem egy módszer: készítés és paraméterezés.

Sasold meg ezt:
http://sakura7.blog.hu/2010/07/15/mipmap_generalas_alsofokon

Kérdés még, h ES 1.x vagy ES 2.0 a cél.
alias aalberik
   
Joderida - Tag | 55 hsz       Online status #165687   2011.09.29 15:39 GMT+1 óra  
A Mip map betöltése 2 módon lehetséges:mip_map_opengl
Ti melyiket ajánlanátok? Melyik jobb androidra, ha magától csinálja az opengl, vagy, ha én kényszerítem rá a tutit.

   
DMG - Szerkesztő | 3172 hsz       Online status #165633   2011.09.28 22:02 GMT+1 óra  
Ja szóval akkor csak esztétika.

@colker:
Írtam egy alkalmazást ami elvben át tudja irányítani a hangokat fülesről hangszóróra, és vissza, de még nem kerek, szóval még próbálkozom, ha aktuális még.
-----------------------------------------
Dont Listen to the Naysayers
   
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] [8] > 9 < [10] [15]