Have a wheelie good weekend!
Ja: nee.Op woensdag 06 maart 2002 10:22 schreef FragDaddy het volgende:
ik weet al dat een 8 bit (256 kleuren) bitmap een palette gebruikt en dat 24 bit en hoger met RGB waarden werkt (dus geen palette)
maar weet iemand of een 16-bit bitmap een palette gebruikt ?
Verwijderd
Gebruikt dus ook RGB waarde, als ik het me goed herinner, 5 bit rood 6 bit groen en 5 bits blauw. Omdat Het menselijk oog het gevoeligst is voor groen heeft dat ding een bitje extra. Je moet wel flink wat bitmanipulatie doen omdat niet elke kleur in een aparte byte zit.
damn. als ik een 16 bit bitmap zonder palette overzet naar een andere computer, krijg ik niet de juiste kleuren.. bij 24 bit gaat het wel goed zonder palette. iemand enig idee waardoor het mis gaat ?
Have a wheelie good weekend!
Dat ligt waarschijnlijk aan de driver van je videokaart. En dan ga ik er hier vanuit dat je programmeert in DirectX of OpenGL of iets dergelijks. In standaard Windows windowed-mode heb je hier vrijwel geen last van.
In 16-bits modus heb je namelijk nogal wat verschillen zitten.
Zoals szwarts al aan haalde heb je maar 2 bytes om de kleuren in op te slaan. Daarom moet je inderdaad nogal wat bitmanipulatie doen wil je een bitmap dat oorspronkelijk 24-bits is, natuurgetrouw in 16-bits te laten zien. Waar zitten nu de verschillen in driver implementatie? Wel de ene driver fabrikant wil bijvoorbeeld:
-5 bits kleur voor rood
-6 bits kleur voor groen
-5 bits kleur voor blauw
Er zijn fabrikanten die willen:
-5 bits kleur voor rood
-5 bits kleur voor groen
-5 bits kleur voor blauw
-1 bits kleur voor alpha
Of:
-5 bits bla bla bla.....
Zo kun je nog wel even doorgaan. De meest gestandaardiseerde oplossing is echter de 1e en 2e versie die ik opnoemde en/of uiteraard combinaties van mogelijkheden. Maar je kunt (als je een beetje inzicht hebt in de 'bits & bytes') wel inzien dat als je de ene keer variant 1 gebruikt om een plaatje te tonen, het er anders uitziet als je variant 2 gebruikt. Soms heb je hierin geen keus, omdat de driver van je videokaart niet anders kan. Vaak echter kun je opvragen welke modi de driver allemaal ondersteunt en moet je ook aan de driver expliciet doorgeven welke van de modi je wilt gaan gebruiken. In DirectX of OpenGL gaat dat allemaal heel simpel via 'GetFormat' of 'SetFormat' functies etc.
In 16-bits modus heb je namelijk nogal wat verschillen zitten.
Zoals szwarts al aan haalde heb je maar 2 bytes om de kleuren in op te slaan. Daarom moet je inderdaad nogal wat bitmanipulatie doen wil je een bitmap dat oorspronkelijk 24-bits is, natuurgetrouw in 16-bits te laten zien. Waar zitten nu de verschillen in driver implementatie? Wel de ene driver fabrikant wil bijvoorbeeld:
-5 bits kleur voor rood
-6 bits kleur voor groen
-5 bits kleur voor blauw
Er zijn fabrikanten die willen:
-5 bits kleur voor rood
-5 bits kleur voor groen
-5 bits kleur voor blauw
-1 bits kleur voor alpha
Of:
-5 bits bla bla bla.....
Zo kun je nog wel even doorgaan. De meest gestandaardiseerde oplossing is echter de 1e en 2e versie die ik opnoemde en/of uiteraard combinaties van mogelijkheden. Maar je kunt (als je een beetje inzicht hebt in de 'bits & bytes') wel inzien dat als je de ene keer variant 1 gebruikt om een plaatje te tonen, het er anders uitziet als je variant 2 gebruikt. Soms heb je hierin geen keus, omdat de driver van je videokaart niet anders kan. Vaak echter kun je opvragen welke modi de driver allemaal ondersteunt en moet je ook aan de driver expliciet doorgeven welke van de modi je wilt gaan gebruiken. In DirectX of OpenGL gaat dat allemaal heel simpel via 'GetFormat' of 'SetFormat' functies etc.
"The fastest code, is the code that is never called."