Home › Forums › A Demokészítés művészete › Programozás › Segítség, kezdőknek!
Tagged: opengl shader textúra
- This topic has 96 replies, 27 voices, and was last updated 11 years, 11 months ago by Travis.
-
AuthorPosts
-
2009-09-03 at 20:14 #2830MurphyMember
Ahh, ezért nem mennek nálam se a 4k intrók…
2009-09-04 at 08:08 #2831NmGMemberKöszi a tippeket skacok! A vasam nem ugrik olyan gyorsan, hogy akár Vista-t telepítsek rá. XP-t használok, a projekt MASM-ban készül, talán ezzel lehet a gond (mivel a Crinkler erősen VS-hez ajánlott).Ami a Win7-et érinti, úgy olvastam, hogy a hiba egy OS funkció megváltozása miatt bukkant fel és dolgoznak már rajta.De vissza az eredeti kérdésemhez: Egyáltalán használt már valaki crinklert? Nálam a nagyon bonyolult “ExitProcess(0);” program is kiakadt tömörítés után. :(
2009-09-04 at 10:03 #2832napMemberSzerintem majdnem mindenki használ. Én mondjuk amikor 4k-t még asm-ben írtam akkor még nem volt Crinkler (ezért droppoltam), szóval arról nem tudok nyilatkozni. Viszont VC-hez mindig működött.Egyébként itt találhatsz MASM/Crinkler-es 4k forrást is: http://in4k.untergrund.net/index.php?title=Sample_Sources#MASM
2009-09-05 at 12:43 #2833blalaMemberteljesen jol megy a crinkler pure asm koddal is, bar en masm-al nem probaltam csak nasm-al. van valami oka a megszokason kivul hogy masm-ot hasznalsz?
2009-09-06 at 11:01 #2834GeorgyMemberwrote …
The undoubtedly most anticipated Crinkler release is finally here! We proudly present to you: Crinkler 1.2 ! -Windows 7 compatible. -Windows 2000 incompatible. -Slightly smaller header. -A recompression mode allowing you to update existing crinkler exe-files to the new header and import code. -A few minor compression tweaks. Now go recompress those old incompatible intros! :)2009-09-06 at 15:52 #2835SpenotMember\o/
2009-09-13 at 19:14 #2836NmGMemberValamit én ronthatok el, mert ahogy írtam még a “Hello World”-nél is egyszerűbb proggi, ami csupán egy ExitProcess hívásból áll, sem működik. Ha sikerül valamit kihámoznom, akkormajd megírom. (Bár az a gyanúm, hogy nem sok MASM érdeklődő akad itt ^^).
2009-09-13 at 22:49 #2837GargajKeymasterbevallom en is NASM-os vagyok, de szerintem ha mutatsz forrast akkor meg tudjuk nezni
2009-09-14 at 21:33 #2838NmGMemberKöszi a segítő szándékot! Kiderítettem közben, hogy mi a baj. A MASM32 csomagjában lévő libek (pl. kernel32.lib és user32.lib) nem tetszenek a crinklernek.A VC2008 libjeivel már boldogultam.
2010-04-11 at 14:48 #2839EsplanadeMemberSzeretnék egy demót készíteni, az őszi Function party lenne a cél. A fejemben már kész a demó, technikailag annyi lenne hogy háttérben fotó, előtérben 2D vagy 3D objektumok mozognának, még nem tudom hogy lenne érdemes megvalósítani. Vázlatrajzokból szeretnék egy videót összeállítani, hogy a rendezést és az ötleteimet megmutathassam a zenésznek és a fotósnak (és én is jobban lássam mi a feladat). Ehhez keresek valami programot. Tudnátok ajánlani?
2010-04-12 at 11:30 #2840GargajKeymasterstoryboarder program kene?
2010-04-12 at 18:45 #2841EsplanadeMemberigen, ezt a szót kerestem, majd guglizok valamit
2010-04-13 at 22:41 #2842slyspyKeymasterpowerpoint
2010-04-14 at 10:24 #2843EsplanadeMembervégül Sony Vegas mellett döntöttem, találtam tutorialt ahol lehet csúsztatni a képet és zoomolni és könnyű zenére időzíteni
ha elkészül a vázlat demó majd megmutassam? vagy lelövöm vele a poént? :) amint látom nem szokás készülő anyagból infót kiszivárogtatni, de mivel első demós csapat vagyunk minden segítség jól jön, szóval valszeg majd megosztom veletek2010-04-14 at 11:19 #2844slyspyKeymasterMost hogy így mondod, tényleg mindig a titkolózás megy, de ha közreadod, biztos lesz aki mond okosat. Meg olyan is, aki nem.
2010-04-16 at 07:30 #2845BeryMemberNa igen, általában atomnagy titkolózás megy, aztán kiszivárog valami, végül logó orral közli a csapat, hogy sajnos nem készült el ;))))
2010-04-16 at 11:41 #2846vincenzoMemberlogó orr? :)
2010-04-16 at 18:42 #2847BeryMemberMármint egy korsó sörbe logó orral ;)
2010-05-01 at 21:23 #2848NmGMemberKinek mi fekszik. Én ritkábban szeretem a sört orron át…Lehet, hogy egy logóra gondolt, amin egy orr van? :P
2010-05-02 at 08:47 #2849BeryMemberfrom helyett rendszeresen form-ot írok, lógó helyett meg úgy tűnik logót :)
2011-03-30 at 09:33 #2850EsplanadeMemberSzámítógépes grafika videó oktató anyag a BME-rőlhttp://video.bme.hu/index.php?act=vid&tkod=BMEVGR
2011-08-10 at 09:53 #2851EsplanadeMemberebben a Philips reklámban nagyon tetszik a fénycsíkok kirajzolásahttp://www.philips.hu/c/led-vilagitas/38309/cat/ilyet hogy lehet csinálni? tudtok esetleg példakódot adni? vagy csak sima bézier görbe?
2011-08-13 at 07:20 #2852slyspyKeymasterEzt meg lehet csinálni textúra mozgatással is. :) Bár az nagy fake. Lehet, hogy meg is fogom. :)
2011-08-14 at 21:56 #2853blueghostMemberÉn nem igazán értem hogy lehet ilyet textúramozgatással :) Az első gondolatom rögtön az volt, hogy ezt spline görbékkel lehet megoldani.
2011-08-15 at 07:47 #2854MurphyMemberAz a gyanúm, hogy mást értetek “textúramozgatás” alatt. :)
2011-08-15 at 11:34 #2855rascyMemberNekem meg az a gyanúm, hogy slyspy nem nézte végig a videót :)
2011-08-16 at 06:22 #2856slyspyKeymasterNa jó, a hurkokat lehet, hogy tényleg nem lehetne. Amúgy meg van egy ilyen szalag ojjekt és azon csak végig kell tolni a texturát, ami additív. Persze lehet megkódolni is az effektet. :)
2012-12-05 at 16:21 #23810EdwardMemberSziasztok!
Egy kis segítséget/tanácsot szeretnék kérni.
Adott egy bináris modell formátum. Saját formátum, én írtam az exporter-t hozzá Blender-hez. A formátum támogat több objektumból álló modelleket is és minden objektum külön textúrával rendelkezik. Írtam hozzá betöltőt/megjelenítőt is ami VBO-t használ, de shadere-eket még nem. Ezzel nincs is gond, működik rendesen.
Ezt követően átalakítottam a modell osztályomat, hogy shader-t használjon. A textúra viszont elég érdekesen jelenik meg rajta:
screenshot
Az ablak kezeléshez SDL 1.2-t használok, bár nem hiszem, hogy ez gond lenne. Ami nem igazán világos nekem, hogy ha összetett modellt akarunk kirajzolni, akkor mi a bevett szokás? Google-el próbáltam keresni példákat, leírást stb, de mindenütt csak egyszerűbb, egy objektumos példák vannak. Lehet csak nem a megfelelő módon kerestem…
A vertex-eket jól jeleníti meg, körbe is tudok menni, kamera kezelés meg van oldva. A shader-ek is jók, mert egy egyszerű kockát jól jelenít meg. Ez alapján a tutoriál alapján csináltam:
opengl-tutorial.org
Ez lenne a metódus, ami kirajzolja a modellt:
void CModel::draw(glm::mat4 &MVP)
{
glActiveTexture(GL_TEXTURE0);
for(unsigned int i=0; i<m_numObjects; i++)
{
glUseProgram(m_programID);
unsigned int matrixUniform = glGetUniformLocation(m_programID, "MVP");
unsigned int textureUniform = glGetUniformLocation(m_programID, "myTextureSampler");
glUniformMatrix4fv(matrixUniform, 1, GL_FALSE, &MVP[0][0]);
glBindTexture(GL_TEXTURE_2D, m_textureIDs[i]);
glUniform1i(textureUniform, 0);
glBindBuffer(GL_ARRAY_BUFFER, m_bufferIDs[i]);
// vertices
glEnableVertexAttribArray(0);
glVertexAttribPointer(
0, // must match the layout in the shader.
3, // size
GL_FLOAT, // type
GL_FALSE, // normalized?
sizeof(float)*8, // stride
(void*)0 // array buffer offset
);
// UVs
glEnableVertexAttribArray(1);
glVertexAttribPointer(
1,
2,
GL_FLOAT,
GL_FALSE,
sizeof(float)*8,
(void*)6
);
glDrawArrays(GL_TRIANGLES, 0, m_numElements[i]);
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
glUseProgram(0);
}
}
2012-12-05 at 21:18 #23843CaiwanMemberElső ránézésre:
Mi van a vbo-ban? Lehet nem egy struct tömböt kellene átadni, ahol egymás után vannak az adatok, hanem külön-külön tömböket; nekem úgy néz ki innen (ha jól értelmezem), hogy nem kapja meg a shader az UV-t.
struct{
float *vertex; //vertexek egymas utan x, y, z; [0..3*vertex_darab]
float *normal; //ugyanigy
float *uv; // [0..2*vertex_darab]
float *tobbi; // minden egyeb vertex adat; pl. tengens vektor
unsigned int *indexek; //bizonyos eszkozokon, pl. openges2-ben unsigned short lehet
unsigned int vertex_darab;
unsigned int texture_id;
}mesh;// ...
// shader be
// vbo be (most siman vbo nelkul)
glBindAttribLocation(shader.program, 0, "texUV"); //lehet ez hianyzik neked;
glVertexAttribPointer(0, 2, GL_FLOAT, 0, 0, mesh.uv);
glEnableVertexAttribArray(0); //ennek elvileg a sorrendje mindegyglBindAttribLocation(shader.program, 1, "vertexCoord"); //lehet ez hianyzik neked;
glVertexAttribPointer(1, 3, GL_FLOAT, 0, 0, mesh.vertex);
glEnableVertexAttribArray(1); //ennek elvileg a sorrendje mindegy// draw
// vertex attrib ki
// vbo ki
// shader kiAmit hozzátennék; nem tudom milyen oprengl-t használsz (3-at talán, abba nincs vertex array, meg hasonlók, helyette mindent vertex attribbal kell átadni; de nem tudom hogy van ez) előfordulhat hogy bizonyos kártyák bizonyos level-öket fenntartanak fix paramétereknek, pl. ez.
Én opengl2-t használok, tehát a vertex, normal, és uv értékeket nem atribbal adom át, hanem gl[Vertex|Normal|TexCoord]Pointer függvénnyel. Ha így használod, akkor előtte/utána gl[Enable|Disable]ClientState() kell majd.A (most már) ingyenes gDEBuggerrel meg tudod nézni mit művel futás közbe, illetve a shadereid megkapják-e a paramétereiket, vagy nem.
Nekem ennyi ötletem támadt, de ha nem ez, akkor jelenleg nem tudom.
2012-12-05 at 22:19 #23845EdwardMemberOpengl 3.3-at használok, úgy tudom hogy az adatokat pont úgy kell átadni a shader-nek ahogy én csinálom. A glBindAttribLocation már a 4-es API-ban van.
A tömb amiben az adatok vannak, jó kell hogy legyen, mert shader nélkül működik. Pont úgy csináltam, ahogy írod, a glEnableClientState-tel és akkor jó volt. -
AuthorPosts
- You must be logged in to reply to this topic.