» »

Transparentnost

Transparentnost

Phil ::

Imam eno vprašanje glede transparentnosti. Kako nastaviti glBlendFunc, da bo črna barva na teksturi popolnoma presojna, druge pa nepresojne?
Zdej imam nastavljeno na glBlendFunc(GL_SRC_ALPHA,GL_ONE) pa postane črna barva presojna, vendar pa presojne postanejo tudi druge barve.
Ker imam za ozadje nebo, postanejo potem te teksture preveč svetle, sploh če jih je več skupaj. Poskusil sem že z glColor4f(x,x,x,x) in sem dal zadnjo komponento na 1, pa nič ne pomaga. A je treba se kaj nastaviti npr. glAlphaFunc???
Jzt bi to rad uporabil za drevesa, grme... in bi rad da, je samo črna barva popolnoma presojna, druge pa cisto normalne. Lahk pa dam tut slikce če kdo ne razume vprašanja.
LP
  • spremenil: Phil ()

rasta ::

lahk bi napisal s katerim prog. jezikom se sploh ubadaš ...

Phil ::

VC++.
LP

Senitel ::

Se prav hočeš da so piksli črne barve nevidni (se ne izrišejo)?
Če je imaš vrednost za črno RGBA 1.0f,1.0f,1.0f,1.0f, potem narediš enostavno:
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_LESS,1.0f);

Če je to to... :D

Phil ::

Hm jzt ce dam glAlphaFunc(GL_LESS,1.0f) mi sploh ne izrise nic, razen ce prej dodam glColor4f(x,x,x,nekaj manj od 1). A je mozno, da
je narobe to, da imam format piksla pri nalaganju tekstur GL_RGB?
zdej mam tkole:
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[i]->sizeX, TextureImage[i]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[i]->data);
Sam ce dam pa tkole:
glTexImage2D(GL_TEXTURE_2D, 0, 4, TextureImage[i]->sizeX, TextureImage[i]->sizeY, 0, GL_RGBA, GL_UNSIGNED_BYTE, TextureImage[i]->data);
mi pa kr eno napako v 3dfxogl javi. Mogoce ves kaj bi lahko bilo narobe? A mogoče veš za kakšen lin kjer bi bilo blendanje razlozeno?
LP

Senitel ::

Armm, to kar ti hočeš nardit ni blendanje... Blendanje se dela po čist simpl formuli PixelColor=SourceFactor*Source+DestFactor*Dest. Kar ti hočeš pa je to, da so nekateri pixli, ki imajo alpha vrednost 1.0f nevidni (right). Dej probi glTexImage2D(GL_TEXTURE_2D, 0, 2, TextureImage[i]->sizeX, TextureImage[i]->sizeY, 0, GL_RGBA, GL_UNSIGNED_BYTE, TextureImage[i]->data);
In če to pobere R5G5B5A1 format, potem postavi un tazaden bit na 1 za tiste pixle, ki jih nočeš videt in bi moglo delat...

DarkWIng ::

nabolj pametno bi bilo če bi v alpha layer naloživ masko potem pa uporabiš glBlendFunc( x ,GL_DEST_ALPHA)

rasta: opengl ukazi so pod vsemi programskimi jeziki skoraj popolnoma enaki.
You're a wonderful friend and a raving psycho.

Senitel ::

DarkWIng:
1. Nebi se jaz igral z GL_DEST_ALPHA na Voodoo 3 pri 16bpp, ker dvomim, da zadeva podpira R5G5B5A1 kot render target...
2. glBlendFunc(x,GL_DEST_ALPHA) ti nadri src*x+dest*DEST_ALPHA in nekako dvomim, da je to to...

DarkWIng ::

Kje si prebral da mora delat na Voodoo 3 pri 16bpp? In če ti povem po pravici R5G5B5A1 formata še nisem uporabljav nikoli ker mi je preprosto zanič. 1 bit alpha je tako kot da ga ni (razen za res grd masking). Meni edino uporabena formata sta R8G8B8A8 za blending pa mogoče R10G10B10A2 za multitexturing.
(pa sorry moja napaka.. ni gl_dest_alpha)
glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); ...tole uporabljam pri particle systemu.. in dela čist lepo.
You're a wonderful friend and a raving psycho.

Senitel ::

DarkWIng:
glTexImage2D(GL_TEXTURE_2D, 0, 4, TextureImage[i]->sizeX, TextureImage[i]->sizeY, 0, GL_RGBA, GL_UNSIGNED_BYTE, TextureImage[i]->data);
mi pa kr eno napako v 3dfxogl javi.

Ja glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA); je pa neki čist druzga :D. Pa kje si staknu R10G10B10A2?? Na GeForce-u 3?

Zgodovina sprememb…

  • spremenil: Senitel ()

DarkWIng ::

R10G10B10A2 je hardversko podprt v opengl od 1.3 naprej (in pomoje DX8.1) na GF3 (mogoče tudi na gf1/2 ampak ne vem). na drugih implementacijah pa dela samo v softverskem načinu.

"glTexImage2D(GL_TEXTURE_2D, 0, 4, TextureImage[i]->sizeX, TextureImage[i]->sizeY, 0, GL_RGBA, GL_UNSIGNED_BYTE, TextureImage[i]->data);
mi pa kr eno napako v 3dfxogl javi." ... kaj pa naj bi bla tista 4 tm.. tam mora bit ne format(pomoje externi).. možno da stvar ne dela ker vsi formati na različnih karticah niso podprti...
You're a wonderful friend and a raving psycho.

Senitel ::

Fora je v tem, da nobena kartica od 3dfx-a (razen Voodoo 4 & 5) ne pozna R8G8B8A8...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

tekstura [c++ opengl]

Oddelek: Programiranje
9844 (629) matej94
»

No sound (Wolfenstein...)

Oddelek: Igre
152002 (1838) Slo-One
»

[C && OpenGL] "speed tape"

Oddelek: Programiranje
71207 (1058) Monster
»

Firefox fonti (povecava)?

Oddelek: Omrežja in internet
71349 (1221) SeTAr
»

eno vprašanje o glTranslate

Oddelek: Programiranje
5920 (835) Senitel

Več podobnih tem