Forum » Programiranje » [C && OpenGL] "speed tape"
[C && OpenGL] "speed tape"
Monster ::
Rad bi nasvet kako naj naredim speed tape v OpenGL-u, skratka ideja je taka. Imam texturo ki je 256x2560(pac 10 številk, v vodoravnem traku, "okno" je veliko 256x256 .. ) sedaj pa bi rad na enem quadu ta trak premikal gor in dol in naenkrat bi se videlo samo 256x256 del te texture ... in tukaj bi rad kako usmeritev, z čim naj se tega lotim... Hvala!
PS: bom se probal malo bolše razložit, če kaj ni jasno.
PS: bom se probal malo bolše razložit, če kaj ni jasno.
Ka zaboga...
Vesoljc ::
dvema trikotnikoma ki sestavljata ta quad, dolocis tudi uv coordinate. ko gres risat trikotnike poves katero teksturo uporabljata ter uv kooridnate, ki povesta kateri del teksture se preslika na treikotnik. potem "vozis" samo te koordiante. ogl detajlov zal ne vem, ampak ziher je cel kup tutorialov na netu kako zadevo speljat
Abnormal behavior of abnormal brain makes me normal...
Monster ::
verjamem ja .. iscem v tej smeri, sam nevem ce se prav izrazam ;) ... texture matrix?
Ka zaboga...
Senitel ::
Jup lahko narediš to s texture matrix, da ti ni treba u in v koordinat stalno spremnijat.
Monster ::
ok .. prvi del mislim da sm rešil, ampak sedaj me zanima kako preprečim da mi texturo stisne na velikost quada ...
// Typical Texture Generation Using Data From The Bitmap
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
... tole je koda(ki mislim da je odgovorna za to :)), textura je velika 256x512, verjetno moram kaj prestimat pri glTexParameteri, samo kolko sem poskušal do sedaj se ni nič spremenilo ... any hints? ;)
// Typical Texture Generation Using Data From The Bitmap
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
... tole je koda(ki mislim da je odgovorna za to :)), textura je velika 256x512, verjetno moram kaj prestimat pri glTexParameteri, samo kolko sem poskušal do sedaj se ni nič spremenilo ... any hints? ;)
Ka zaboga...
Monster ::
hmmm .. zadevo sm resil z glscale(samo moram met texturo n^2 potem, kar ni glih cool ce imam trak od 0 do 9 ), je to prava pot ali mi kdo svetuje kako drugače :)
Ka zaboga...
Zgodovina sprememb…
- spremenil: Monster ()
Senitel ::
Ok, moj OpenGL je mal "rusty"...
Prvo tekstura je mal velka, za take dimenzije v bistvu rabiš GeForce 3+, oziroma SM 3.0 hardware od ATI-ja.
Zdej če zadevo delaš takole, da imaš en sam quad potem imaš koordinate od (0.0f, 0.0f) do (1.0f, 1.0f / 10.0f) (sedaj imaš do 1.0f right?) in quadu spreminjaš t koordinato gor in dol kakor ti paše. To lahko narediš z texture matrix (glTranslate po y koordinati).
Glede na dimenzije teksture 2560 se mi zdi da padeš pod NV_TEXTURE_RECTANGLE in moraš s in t koordinate imet v nenormalizirani obliki (torej ne od 0 do 1 ampak od 0 do dejanske širine).
Kar bi jaz naredil je da bi vzel eno teksturo bolj standarnih dimenzij, recimo 2k x 1k, vanjo zapakiral deset številk, potem pa naredil še 10 quadov, vsak od teh bi imel svojo številko in jih premikal kakor ti paše.
Prvo tekstura je mal velka, za take dimenzije v bistvu rabiš GeForce 3+, oziroma SM 3.0 hardware od ATI-ja.
Zdej če zadevo delaš takole, da imaš en sam quad potem imaš koordinate od (0.0f, 0.0f) do (1.0f, 1.0f / 10.0f) (sedaj imaš do 1.0f right?) in quadu spreminjaš t koordinato gor in dol kakor ti paše. To lahko narediš z texture matrix (glTranslate po y koordinati).
Glede na dimenzije teksture 2560 se mi zdi da padeš pod NV_TEXTURE_RECTANGLE in moraš s in t koordinate imet v nenormalizirani obliki (torej ne od 0 do 1 ampak od 0 do dejanske širine).
Kar bi jaz naredil je da bi vzel eno teksturo bolj standarnih dimenzij, recimo 2k x 1k, vanjo zapakiral deset številk, potem pa naredil še 10 quadov, vsak od teh bi imel svojo številko in jih premikal kakor ti paše.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [DirectX] Problem s teksturamiOddelek: Programiranje | 701 (599) | Senitel |
» | tekstura [c++ opengl]Oddelek: Programiranje | 919 (704) | matej94 |
» | C#,HLSL, 3D textureOddelek: Programiranje | 1066 (959) | spelic |
» | TransparentnostOddelek: Programiranje | 1246 (1065) | Senitel |
» | eno vprašanje o glTranslateOddelek: Programiranje | 974 (889) | Senitel |