glBitmap: Unterschied zwischen den Versionen
Flo (Diskussion | Beiträge) K (Wird Offline bearbeitet) |
Flo (Diskussion | Beiträge) |
||
Zeile 1: | Zeile 1: | ||
− | { | + | = glBitmap = |
+ | |||
+ | <br> | ||
+ | == Name == | ||
+ | '''glBitmap''' - Zeichnet ein Bitmap. | ||
+ | |||
+ | <br> | ||
+ | == Delphi-Spezifikation == | ||
+ | <b>procedure</b> glBitmap(<b><i>width,height</i></b>: TGLsizei; <b><i>xorig, yorig</i></b>: TGLfloat; | ||
+ | <b><i>xmove,ymove</i></b>: TGLfloat; <b>const</b> <b><i>bitmap</i></b>: PGLubyte); | ||
+ | |||
+ | <br> | ||
+ | == Parameter == | ||
+ | |||
+ | {| border="1" rules="all" | ||
+ | ! ''width,height'' | ||
+ | | Bestimmen die Größe der Bitmap. | ||
+ | |- | ||
+ | ! ''xorig, yorig'' | ||
+ | | Bestimmt den Koordinaten Ursprung(von links,unten) innerhalb des Bitmaps. | ||
+ | |- | ||
+ | ! ''xmove, ymove'' | ||
+ | | Legt fest um wieviel die aktuelle Rasterposition verschoben werden soll. | ||
+ | |- | ||
+ | ! ''bitmap'' | ||
+ | | Ein Zeiger auf die Bitmap('''Achtung''': Entspricht nicht dem TBitmap aus Delphi) | ||
+ | |} | ||
+ | |||
+ | <br> | ||
+ | |||
+ | == Beschreibung == | ||
+ | An der aktuellen Rasterposition wird überall dort wo im Bitmap eine 1 ist wird gezeichnet. Der Bereich des Bitmaps der eine 0 beihnhaltet bleibt unberührt. | ||
+ | Anschließend wird die aktuelle Rasterposition um '''xmove''' und '''ymove''' erhöht. | ||
+ | |||
+ | <br> | ||
+ | == Hinweise == | ||
+ | Falls die aktuelle Rasterposition ungültig ist wird glBitmap ignoriert. | ||
+ | |||
+ | Die Fenter-Koordianten an dennen das Bitmap gezeichnet wird errechnet man durch: | ||
+ | |||
+ | Fenster.X := Rasterposition.X - Bitmap_Ursprung.X ; | ||
+ | Fenster.Y := Rasterposition.Y - Bitmap_Ursprung.Y ; | ||
+ | |||
+ | Möchte man etwa den Buchstaben klein "g" etwas tiefer positionieren so kann man sich diese Eigenschaft von glBitmap zu Nutze machen und den Urspung etwas höher ansetzen. | ||
+ | |||
+ | [[Bild:glBitmap.png]] | ||
+ | |||
+ | Beim Zeichnen wird die aktuellen Rasterfarbe (bzw. dem aktuellen Raster Index) | ||
+ | verwendet sowie die aktuellen Raster Textur Koordianten. | ||
+ | Die Z Position wird von der aktullen Rasterposition bezogen. | ||
+ | |||
+ | Die erzeugten Pixel-Fragmente werden so behandelt als wären sie von Polygon, Linen und Punkten unter der Benutzung von [[Nebel]], [[texture mapping]] und anderen Pixel Operatoren (wie etwa Alpha- und Tiefen Test) erstellt worden. | ||
+ | |||
+ | Die Bitmaps brauchen zur Speicherung einer Bit-Zeile immer 32 Bit egal wieviel Spalten davon genutzt werden. | ||
+ | |||
+ | <br> | ||
+ | == Fehlermeldungen == | ||
+ | GL_INVALID_VALUE wird generiert wenn der Parameter width oder height negativ ist. | ||
+ | GL_INVALID_OPERATION wird generiert wenn glBitmap zwischen [[glBegin]] und dem dazugehörigen [[glEnd]] aufgerufen wird. | ||
+ | |||
+ | |||
+ | <br> | ||
+ | == Zugehörige Wertrückgaben == | ||
+ | *[[glGet]] mit Token [[glGet#GL_CURRENT_RASTER_POSITION|GL_CURRENT_RASTER_POSITION]] | ||
+ | *[[glGet]] mit Token [[glGet#GL_CURRENT_RASTER_COLOR|GL_CURRENT_RASTER_COLOR]] | ||
+ | *[[glGet]] mit Token [[glGet#GL_CURRENT_RASTER_INDEX|GL_CURRENT_RASTER_INDEX]] | ||
+ | *[[glGet]] mit Token [[glGet#GL_CURRENT_RASTER_TEXTURE_COORDS|GL_CURRENT_RASTER_TEXTURE_COORDS]] | ||
+ | *[[glGet]] mit Token [[glGet#GL_CURRENT_RASTER_POSITION_VALID|GL_CURRENT_RASTER_POSITION_VALID]] | ||
+ | |||
+ | <br> | ||
+ | ==Beispiel== | ||
+ | |||
+ | <b>type</b> | ||
+ | TBitmap=<b>array</b> [0..7,0..3] <b>of</b> Byte; | ||
+ | <b>var</b> | ||
+ | Bitmap:TBitmap; | ||
+ | <b>procedure</b> OnCreate;<font color="#000080"><i>//Wird beim Start aufgerufen</i></font> | ||
+ | <b>type</b> | ||
+ | Bit=0..1; | ||
+ | <b>function</b> BinByte(B128,B64,B32,B16,B8,B4,B2,B1:Bit):Byte; | ||
+ | <b>begin</b> | ||
+ | result := 0; | ||
+ | <b>if </b>B128 <> 0 <b>then </b>Inc(result,128); | ||
+ | <b>if </b>B64 <> 0 <b>then </b>Inc(result,64); | ||
+ | <b>if </b>B32 <> 0 <b>then </b>Inc(result,32); | ||
+ | <b>if </b>B16 <> 0 <b>then </b>Inc(result,16); | ||
+ | <b>if </b>B8 <> 0 <b>then </b>Inc(result,8); | ||
+ | <b>if </b>B4 <> 0 <b>then </b>Inc(result,4); | ||
+ | <b>if </b>B2 <> 0 <b>then </b>Inc(result,2); | ||
+ | <b>if </b>B1 <> 0 <b>then </b>Inc(result,1); | ||
+ | <b>end</b>; | ||
+ | <b>begin</b> | ||
+ | Bitmap[7][0] := BinByte(1,1,1,1,1,1,1,0); | ||
+ | Bitmap[6][0] := BinByte(0,1,1,1,1,1,1,0); | ||
+ | Bitmap[5][0] := BinByte(0,1,1,0,0,0,1,0); | ||
+ | Bitmap[4][0] := BinByte(0,1,1,1,1,0,0,0); | ||
+ | Bitmap[3][0] := BinByte(0,1,1,1,1,0,0,0); | ||
+ | Bitmap[2][0] := BinByte(0,1,1,0,0,0,0,0); | ||
+ | Bitmap[1][0] := BinByte(0,1,1,0,0,0,0,0); | ||
+ | Bitmap[0][0] := BinByte(1,1,1,1,0,0,0,0); | ||
+ | |||
+ | Bitmap[7][1] := BinByte(1,1,1,1,0,0,0,0); | ||
+ | Bitmap[6][1] := BinByte(0,1,1,0,0,0,0,0); | ||
+ | Bitmap[5][1] := BinByte(0,1,1,0,0,0,0,0); | ||
+ | Bitmap[4][1] := BinByte(0,1,1,0,0,0,0,0); | ||
+ | Bitmap[3][1] := BinByte(0,1,1,0,0,0,0,0); | ||
+ | Bitmap[2][1] := BinByte(0,1,1,0,0,0,1,0); | ||
+ | Bitmap[1][1] := BinByte(0,1,1,1,1,1,1,0); | ||
+ | Bitmap[0][1] := BinByte(1,1,1,1,1,1,1,0); | ||
+ | |||
+ | Bitmap[7][2] := BinByte(0,0,1,1,1,1,0,0); | ||
+ | Bitmap[6][2] := BinByte(0,1,1,1,1,1,1,0); | ||
+ | Bitmap[5][2] := BinByte(1,1,0,0,0,0,1,1); | ||
+ | Bitmap[4][2] := BinByte(1,1,0,0,0,0,1,1); | ||
+ | Bitmap[3][2] := BinByte(1,1,0,0,0,0,1,1); | ||
+ | Bitmap[2][2] := BinByte(1,1,0,0,0,0,1,1); | ||
+ | Bitmap[1][2] := BinByte(0,1,1,1,1,1,1,0); | ||
+ | Bitmap[0][2] := BinByte(0,0,1,1,1,1,0,0); | ||
+ | |||
+ | Bitmap[7][3] := BinByte(0,0,0,0,0,0,0,0); | ||
+ | Bitmap[6][3] := BinByte(0,0,0,0,0,0,0,0); | ||
+ | Bitmap[5][3] := BinByte(0,0,0,0,0,0,0,0); | ||
+ | Bitmap[4][3] := BinByte(1,1,1,1,1,1,1,1); | ||
+ | Bitmap[3][3] := BinByte(1,1,1,1,1,1,1,1); | ||
+ | Bitmap[2][3] := BinByte(0,0,0,0,0,0,0,0); | ||
+ | Bitmap[1][3] := BinByte(0,0,0,0,0,0,0,0); | ||
+ | Bitmap[0][3] := BinByte(0,0,0,0,0,0,0,0); | ||
+ | <b>end</b> | ||
+ | |||
+ | <b>procedure</b> Draw;;<font color="#000080"><i>//Zeichen Routine</i></font> | ||
+ | <b>begin</b> | ||
+ | glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); | ||
+ | glBitmap(0,0,0,0,300,200,nil); | ||
+ | glBitmap(8,8,0,6, 0,0,@Bitmap[0,3]);<font color="#000080"><i>//Gibt Bit-Spalten 25-32 aus(_)</i></font> | ||
+ | glBitmap(8,8,0,0,10,0,@Bitmap[0,0]);<font color="#000080"><i>//Gibt Bit-Spalten 1-8 aus(F)</i></font> | ||
+ | glBitmap(8,8,0,0,10,0,@Bitmap[0,1]);<font color="#000080"><i>//Gibt Bit-Spalten 9-16 aus(L)</i></font> | ||
+ | glBitmap(8,8,0,0,10,0,@Bitmap[0,2]);<font color="#000080"><i>//Gibt Bit-Spalten 17-24 aus(O)</i></font> | ||
+ | glBitmap(8,8,0,0,10,0,@Bitmap[0,3]);<font color="#000080"><i>//Gibt Bit-Spalten 25-32 aus(-)</i></font> | ||
+ | glBitmap(20,8,0,0,0,0,@Bitmap[0,0]);<font color="#000080"><i>// Gibt Bit-Spalten 1-20 aus(FL()</i></font> | ||
+ | glBitmap(0,0,0,0,-40,0,<b>nil</b>); <font color="#000080"><i>//Zurück</i></font> | ||
+ | glBitmap(0,0,0,0,-300,-200,<b>nil</b>); <font color="#000080"><i>//Zurück</i></font> | ||
+ | <b>end</b> | ||
+ | |||
+ | |||
+ | |||
+ | <br> | ||
+ | == Siehe auch == | ||
+ | [[wglUseFontBitmaps]], [[glBegin]], [[glDrawPixels]], [[glRasterPos]], [[glPixelStore]], [[glPixelTransfer]] | ||
+ | |||
+ | [[Kategorie:GL|Bitmap]] |
Version vom 31. August 2004, 17:59 Uhr
Inhaltsverzeichnis
glBitmap
Name
glBitmap - Zeichnet ein Bitmap.
Delphi-Spezifikation
procedure glBitmap(width,height: TGLsizei; xorig, yorig: TGLfloat; xmove,ymove: TGLfloat; const bitmap: PGLubyte);
Parameter
width,height | Bestimmen die Größe der Bitmap. |
---|---|
xorig, yorig | Bestimmt den Koordinaten Ursprung(von links,unten) innerhalb des Bitmaps. |
xmove, ymove | Legt fest um wieviel die aktuelle Rasterposition verschoben werden soll. |
bitmap | Ein Zeiger auf die Bitmap(Achtung: Entspricht nicht dem TBitmap aus Delphi) |
Beschreibung
An der aktuellen Rasterposition wird überall dort wo im Bitmap eine 1 ist wird gezeichnet. Der Bereich des Bitmaps der eine 0 beihnhaltet bleibt unberührt. Anschließend wird die aktuelle Rasterposition um xmove und ymove erhöht.
Hinweise
Falls die aktuelle Rasterposition ungültig ist wird glBitmap ignoriert.
Die Fenter-Koordianten an dennen das Bitmap gezeichnet wird errechnet man durch:
Fenster.X := Rasterposition.X - Bitmap_Ursprung.X ; Fenster.Y := Rasterposition.Y - Bitmap_Ursprung.Y ;
Möchte man etwa den Buchstaben klein "g" etwas tiefer positionieren so kann man sich diese Eigenschaft von glBitmap zu Nutze machen und den Urspung etwas höher ansetzen.
Beim Zeichnen wird die aktuellen Rasterfarbe (bzw. dem aktuellen Raster Index) verwendet sowie die aktuellen Raster Textur Koordianten. Die Z Position wird von der aktullen Rasterposition bezogen.
Die erzeugten Pixel-Fragmente werden so behandelt als wären sie von Polygon, Linen und Punkten unter der Benutzung von Nebel, texture mapping und anderen Pixel Operatoren (wie etwa Alpha- und Tiefen Test) erstellt worden.
Die Bitmaps brauchen zur Speicherung einer Bit-Zeile immer 32 Bit egal wieviel Spalten davon genutzt werden.
Fehlermeldungen
GL_INVALID_VALUE wird generiert wenn der Parameter width oder height negativ ist. GL_INVALID_OPERATION wird generiert wenn glBitmap zwischen glBegin und dem dazugehörigen glEnd aufgerufen wird.
Zugehörige Wertrückgaben
- glGet mit Token GL_CURRENT_RASTER_POSITION
- glGet mit Token GL_CURRENT_RASTER_COLOR
- glGet mit Token GL_CURRENT_RASTER_INDEX
- glGet mit Token GL_CURRENT_RASTER_TEXTURE_COORDS
- glGet mit Token GL_CURRENT_RASTER_POSITION_VALID
Beispiel
type TBitmap=array [0..7,0..3] of Byte; var Bitmap:TBitmap; procedure OnCreate;//Wird beim Start aufgerufen type Bit=0..1; function BinByte(B128,B64,B32,B16,B8,B4,B2,B1:Bit):Byte; begin result := 0; if B128 <> 0 then Inc(result,128); if B64 <> 0 then Inc(result,64); if B32 <> 0 then Inc(result,32); if B16 <> 0 then Inc(result,16); if B8 <> 0 then Inc(result,8); if B4 <> 0 then Inc(result,4); if B2 <> 0 then Inc(result,2); if B1 <> 0 then Inc(result,1); end; begin Bitmap[7][0] := BinByte(1,1,1,1,1,1,1,0); Bitmap[6][0] := BinByte(0,1,1,1,1,1,1,0); Bitmap[5][0] := BinByte(0,1,1,0,0,0,1,0); Bitmap[4][0] := BinByte(0,1,1,1,1,0,0,0); Bitmap[3][0] := BinByte(0,1,1,1,1,0,0,0); Bitmap[2][0] := BinByte(0,1,1,0,0,0,0,0); Bitmap[1][0] := BinByte(0,1,1,0,0,0,0,0); Bitmap[0][0] := BinByte(1,1,1,1,0,0,0,0);
Bitmap[7][1] := BinByte(1,1,1,1,0,0,0,0); Bitmap[6][1] := BinByte(0,1,1,0,0,0,0,0); Bitmap[5][1] := BinByte(0,1,1,0,0,0,0,0); Bitmap[4][1] := BinByte(0,1,1,0,0,0,0,0); Bitmap[3][1] := BinByte(0,1,1,0,0,0,0,0); Bitmap[2][1] := BinByte(0,1,1,0,0,0,1,0); Bitmap[1][1] := BinByte(0,1,1,1,1,1,1,0); Bitmap[0][1] := BinByte(1,1,1,1,1,1,1,0);
Bitmap[7][2] := BinByte(0,0,1,1,1,1,0,0); Bitmap[6][2] := BinByte(0,1,1,1,1,1,1,0); Bitmap[5][2] := BinByte(1,1,0,0,0,0,1,1); Bitmap[4][2] := BinByte(1,1,0,0,0,0,1,1); Bitmap[3][2] := BinByte(1,1,0,0,0,0,1,1); Bitmap[2][2] := BinByte(1,1,0,0,0,0,1,1); Bitmap[1][2] := BinByte(0,1,1,1,1,1,1,0); Bitmap[0][2] := BinByte(0,0,1,1,1,1,0,0);
Bitmap[7][3] := BinByte(0,0,0,0,0,0,0,0); Bitmap[6][3] := BinByte(0,0,0,0,0,0,0,0); Bitmap[5][3] := BinByte(0,0,0,0,0,0,0,0); Bitmap[4][3] := BinByte(1,1,1,1,1,1,1,1); Bitmap[3][3] := BinByte(1,1,1,1,1,1,1,1); Bitmap[2][3] := BinByte(0,0,0,0,0,0,0,0); Bitmap[1][3] := BinByte(0,0,0,0,0,0,0,0); Bitmap[0][3] := BinByte(0,0,0,0,0,0,0,0); end
procedure Draw;;//Zeichen Routine begin glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); glBitmap(0,0,0,0,300,200,nil); glBitmap(8,8,0,6, 0,0,@Bitmap[0,3]);//Gibt Bit-Spalten 25-32 aus(_) glBitmap(8,8,0,0,10,0,@Bitmap[0,0]);//Gibt Bit-Spalten 1-8 aus(F) glBitmap(8,8,0,0,10,0,@Bitmap[0,1]);//Gibt Bit-Spalten 9-16 aus(L) glBitmap(8,8,0,0,10,0,@Bitmap[0,2]);//Gibt Bit-Spalten 17-24 aus(O) glBitmap(8,8,0,0,10,0,@Bitmap[0,3]);//Gibt Bit-Spalten 25-32 aus(-) glBitmap(20,8,0,0,0,0,@Bitmap[0,0]);// Gibt Bit-Spalten 1-20 aus(FL() glBitmap(0,0,0,0,-40,0,nil); //Zurück glBitmap(0,0,0,0,-300,-200,nil); //Zurück end
Siehe auch
wglUseFontBitmaps, glBegin, glDrawPixels, glRasterPos, glPixelStore, glPixelTransfer