Veröffentlicht 20. Februar 200322 j Hallo @ Gruppe Ich habe ein System vorliegen, daß unter 16-Bit-Farbtiefe laufen soll. in meiner Anwendung will ich Graustufen darstellen, die ich - der Einfachheit wegen - mit 16-Bit-RGB-Code generiere. Kann es sein, daß ich unter 16-Bit Farbtiefe nur 32 Graustufen zur Verfügung habe? ... Weil, wenn R = G = B, dann entsteht grau ... und jeder dieser Werte kann 32 verschiedene Werte annehmen (5Bit pro Farbe) ... ist das richtig? Danke für eure Aufmerksamkeit
22. Februar 200322 j Ja, im 15 oder 16bit modus gibts nur 32 graustufen. mit 2x2 dithering ließe sich das auf 128 erhöhen. MfG, Michael in etwa: // input: x,y: pixel koordinate - gray: 0 = schwarz, 127 = weiß void setgraypixel(int x, int y, unsigned char gray) { char pattern[4][2][2] = {{{0, 0}, {0, 0}}, {{{1, 0}, {0, 0}}, {{{1, 0}, {1, 0}}, {{{1, 1}, {1, 0}}}; unsigned char grayvalue = (gray >> 2) + pattern[gray & 3][x & 1][y & 1]; if (grayvalue > 31) grayvalue = 31; setpixel(x, y, grayvalue, grayvalue, grayvalue); // zeichnet pixel and x,y mit der farbe r,g und b (jeweils bereich 0 bis 31) }
22. Februar 200322 j Zählt man auch nur einzelne RGB-Werte hintereinander hoch fällt die Verfärbung aber auch nicht besonders auf und so kann man nochmal die Anzahl der Schattierungen um den Faktor 3 erhöhen. Dithering ist manchmal etwas unschön und fällt je nach Auflösung sicherlich mehr auf. Wenn man schon auf diese Arten rumtrickst, könnte man genausogut auch mit Interlacing arbeiten, aber wie gut sowas aussieht hängt auch sehr von der Monitorfrequenz ab. Es wäre sicherlich interessant mal alle Möglichkeiten parallel auszuspielen und das optische Ergebnis zu analysieren ... bisher habe ich noch nicht ein Demo o.ä. gesehen, das das versucht hätte (vielleicht kamen die 24-Bit-Modi bei den Grafikkarten dazu einfach zu schnell).
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.