OpenGL texture transparancy

Pagina: 1
Acties:

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Weet iemand hoe ik kan aangeven dat een bepaalde kleur (magenta) in een 24-bits RGB texture transparant moet zijn?

  • DroogKloot
  • Registratie: Februari 2001
  • Niet online

DroogKloot

depenisvanjezus

Voor alpha heb je acht extra bits tot je beschikking (in totaal dus 32) :)

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Ja, dat is een optie. Maar dan wordt je texture gelijk 1/3 groter. Ondersteund OpenGL dan geen color keying zoals volgens mij Direct3D en Glide?

Verwijderd

Je videokaart/driver maakt van elke pixel een 32-bit (RGBA) float Als je dus alleen RGB pixels aanlevert dan wordt gewoon de alpha waarde voor elke pixel op 1 gezet. Je hebt dus geen winst als je het alphakanaal niet gebruikt maar je laat de kans lopen om er iets zinnigs mee te doen.
En wie wil nu met elke texture die hij maakt rekening houden dat een bepaalde kleur er niet in mag zitten omdat het anders transparant wordt?

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
De image editing software kan gewoon bijhouden welke kleur transparant is, zodat je er zelf geen last van hebt. Dan kun je gewoon alle kleuren gebruiken die je wilt.

En ik nam aan dat videokaarten ook 24-bits textures ondersteunden, maar blijkbaar is die aanname dan fout.

Verwijderd

Kijk eens op nehe.gamedev.net

  • Olaf van der Spek
  • Registratie: September 2000
  • Niet online
Thanks. Naar zoiets was ik nou op zoek.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

ik ben eens in de dx 8.1 api doc gaan bladeren, maar hoe gaat colorkeying in dx 8 dan? Want dat kan ik dus echt niet vinden...

volgens mij wordt het namelijk ook helemaal niet in directx ondersteund (alleen bij hardware blitting), en in opengl ook niet

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Ik heb er ook nog nooit van gehoord. Volgens mij is het alleen in DirectDraw mogelijk. De enige andere mogelijkheid die ik heb geleerd is door middel van 2 (natuurlijk weer eens) niet gedocumenteerde Window APIs: _AfxInitMaskFromBitmap & _AfxDrawMaskedBitmap.

Verwijderd

Zijn geen windows api's maar gewoon wat ongedocumenteerde troep uit de mfc library's. niet echt ingewikkeld wat ie doet.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void _AfxInitMaskFromBitmap(CBitmap* pbmp, CBitmap* pbmpMask)
{
    BITMAP bmp;
    pbmp->GetObject(sizeof (BITMAP), &bmp);
    pbmpMask->CreateBitmap(bmp.bmWidth, bmp.bmHeight, 1, 1, NULL);

    CDC dcDst;
    dcDst.CreateCompatibleDC(NULL);
    CDC dcSrc;
    dcSrc.CreateCompatibleDC(NULL);
    CBitmap* pbmpSaveDst = dcDst.SelectObject(pbmpMask);
    CBitmap* pbmpSaveSrc = dcSrc.SelectObject(pbmp);

    COLORREF oldBkColor = dcSrc.SetBkColor(dcSrc.GetPixel(0, 0));
    dcDst.BitBlt(0, 0, bmp.bmWidth, bmp.bmHeight, &dcSrc, 0, 0,
NOTSRCCOPY);
    dcSrc.SetBkColor(oldBkColor);
}

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 16-09 23:17

.oisyn

Moderator Devschuur®

Demotivational Speaker

Uhm ja hij heeft het over opengl hoor... MFC heeft daar helemaal niets mee te maken :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1