glBitmap: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Hinweise)
K (Parameter)
 
(12 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= glBitmap =
 
= glBitmap =
  
<br>
+
{{Hinweis|Den Texturloader "glBitmap" von Lossy eX findet man unter [[Glbitmap_loader]]}}
 +
 
 
== Name ==
 
== Name ==
 
'''glBitmap''' - Zeichnet ein Bitmap.
 
'''glBitmap''' - Zeichnet ein Bitmap.
  
<br>
+
 
 +
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
  <b>procedure</b> glBitmap(<b><i>width,height</i></b>: TGLsizei; <b><i>xorig, yorig</i></b>: TGLfloat;  
+
  procedure '''glBitmap'''(''width,height'': TGLsizei; ''xorig, yorig'': TGLfloat;  
                     <b><i>xmove,ymove</i></b>: TGLfloat; <b>const</b> <b><i>bitmap</i></b>: PGLubyte);  
+
                     ''xmove,ymove'': TGLfloat; '''const''' ''bitmap'': PGLubyte);  
 
    
 
    
<br>
+
 
 +
 
 
== Parameter ==
 
== Parameter ==
  
 
{| border="1" rules="all"
 
{| border="1" rules="all"
! ''width,height''
+
! ''width, height''
 
| Bestimmen die Größe der Bitmap.
 
| Bestimmen die Größe der Bitmap.
 
|-
 
|-
Zeile 21: Zeile 24:
 
|-
 
|-
 
! ''xmove, ymove''
 
! ''xmove, ymove''
| Legt fest um wieviel die aktuelle Rasterposition verschoben werden soll.
+
| Legt fest, um wieviel die aktuelle Rasterposition verschoben werden soll.
 
|-
 
|-
 
! ''bitmap''
 
! ''bitmap''
| Ein Zeiger auf die Bitmap('''Achtung''': Entspricht nicht dem TBitmap aus Delphi)
+
| Ein Zeiger auf die Bitmap. {{Warnung|Entspricht nicht dem TBitmap aus Delphi!}}
 
|}
 
|}
  
<br>
+
== Beschreibung ==
 +
An der aktuellen Rasterposition wird überall dort, wo im Bitmap eine 1 ist, gezeichnet. Der Bereich des Bitmaps, der eine 0 beihnhaltet, bleibt unberührt.
 +
Anschließend wird die aktuelle Rasterposition um ''xmove'' und ''ymove'' erhöht.
 +
 
  
== 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 ==
 
== Hinweise ==
Falls die aktuelle Rasterposition ungültig ist wird glBitmap ignoriert.
+
Falls die aktuelle Rasterposition ungültig ist, wird '''glBitmap''' ignoriert.
  
Die Fenter-Koordianten an denen das Bitmap gezeichnet wird errechnet man durch:
+
Die Fenster-Koordianten, an denen das Bitmap gezeichnet wird, errechnet man durch:
  
 
  Fenster.X := Rasterposition.X - Bitmap_Ursprung.X ;
 
  Fenster.X := Rasterposition.X - Bitmap_Ursprung.X ;
 
  Fenster.Y := Rasterposition.Y - Bitmap_Ursprung.Y ;
 
  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|right]]
 +
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)
 
Beim Zeichnen wird die aktuellen Rasterfarbe (bzw. dem aktuellen Raster Index)
 
verwendet sowie die aktuellen Raster Textur Koordianten.
 
verwendet sowie die aktuellen Raster Textur Koordianten.
Die Z Position wird von der aktullen Rasterposition bezogen.
+
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 erzeugten Pixel-Fragmente werden so behandelt als wären sie von Polygon, Linen und Punkten unter der Benutzung  von [[Nebel]], [[texture mapping]] und anderen Pixeloperatoren (wie etwa Alpha- und Tiefentest) erstellt worden.
 +
 
 +
Die Bitmaps brauchen zur Speicherung einer Bit-Zeile immer 32 Bit, egal wie viele Spalten davon genutzt werden.
  
Die Bitmaps brauchen zur Speicherung einer Bit-Zeile immer 32 Bit egal wieviel  Spalten davon genutzt werden.
 
  
<br>
 
  
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
GL_INVALID_VALUE wird generiert wenn der Parameter width oder height negativ ist.
+
'''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.
+
 
 +
'''GL_INVALID_OPERATION''' wird generiert, wenn '''glBitmap''' zwischen [[glBegin]] und dem dazugehörigen [[glEnd]] aufgerufen wird.
 +
 
  
  
<br>
 
 
==  Zugehörige Wertrückgaben ==
 
==  Zugehörige Wertrückgaben ==
 
*[[glGet]] mit Token [[glGet#GL_CURRENT_RASTER_POSITION|GL_CURRENT_RASTER_POSITION]]
 
*[[glGet]] mit Token [[glGet#GL_CURRENT_RASTER_POSITION|GL_CURRENT_RASTER_POSITION]]
Zeile 69: Zeile 72:
 
*[[glGet]] mit Token [[glGet#GL_CURRENT_RASTER_POSITION_VALID|GL_CURRENT_RASTER_POSITION_VALID]]
 
*[[glGet]] mit Token [[glGet#GL_CURRENT_RASTER_POSITION_VALID|GL_CURRENT_RASTER_POSITION_VALID]]
  
<br>
+
 
 +
 
 
==Beispiel==
 
==Beispiel==
  
  <b>type</b>
+
  '''type'''
   TBitmap=<b>array</b> [0..7,0..3] <b>of</b> Byte;
+
   TBitmap='''array''' [0..7,0..3] '''of''' Byte;
  <b>var</b>
+
  '''var'''
 
   Bitmap:TBitmap;
 
   Bitmap:TBitmap;
 
   
 
   
  <b>procedure</b> OnCreate;<font color="#000080"><i>//Wird beim Start aufgerufen</i></font>
+
  '''procedure''' OnCreate;<font color="#000080">''//Wird beim Start aufgerufen''</font>
  <b>type</b>
+
  '''type'''
 
   Bit=0..1;
 
   Bit=0..1;
   <b>function</b> BinByte(B128,B64,B32,B16,B8,B4,B2,B1:Bit):Byte;
+
   '''function''' BinByte(B128,B64,B32,B16,B8,B4,B2,B1:Bit):Byte;
   <b>begin</b>
+
   '''begin'''
 
     result := 0;
 
     result := 0;
     <b>if </b>B128 &lt;&gt; 0 <b>then </b>Inc(result,128);
+
     '''if '''B128 &lt;&gt; 0 '''then '''Inc(result,128);
     <b>if </b>B64  &lt;&gt; 0 <b>then </b>Inc(result,64);
+
     '''if '''B64  &lt;&gt; 0 '''then '''Inc(result,64);
     <b>if </b>B32  &lt;&gt; 0 <b>then </b>Inc(result,32);
+
     '''if '''B32  &lt;&gt; 0 '''then '''Inc(result,32);
     <b>if </b>B16  &lt;&gt; 0 <b>then </b>Inc(result,16);
+
     '''if '''B16  &lt;&gt; 0 '''then '''Inc(result,16);
     <b>if </b>B8  &lt;&gt; 0 <b>then </b>Inc(result,8);
+
     '''if '''B8  &lt;&gt; 0 '''then '''Inc(result,8);
     <b>if </b>B4  &lt;&gt; 0 <b>then </b>Inc(result,4);
+
     '''if '''B4  &lt;&gt; 0 '''then '''Inc(result,4);
     <b>if </b>B2  &lt;&gt; 0 <b>then </b>Inc(result,2);
+
     '''if '''B2  &lt;&gt; 0 '''then '''Inc(result,2);
     <b>if </b>B1  &lt;&gt; 0 <b>then </b>Inc(result,1);
+
     '''if '''B1  &lt;&gt; 0 '''then '''Inc(result,1);
   <b>end</b>;
+
   '''end''';
  <b>begin</b>
+
  '''begin'''
 
   Bitmap[7][0] := BinByte(1,1,1,1,1,1,1,0);
 
   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[6][0] := BinByte(0,1,1,1,1,1,1,0);
Zeile 128: Zeile 132:
 
   Bitmap[1][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);
 
   Bitmap[0][3] := BinByte(0,0,0,0,0,0,0,0);
  <b>end</b>;
+
  '''end''';
 
   
 
   
  <b>procedure</b> Draw;<font color="#000080"><i>//Zeichen Routine</i></font>
+
  '''procedure''' Draw;<font color="#000080">''//Zeichen Routine''</font>
  <b>begin</b>
+
  '''begin'''
 
   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
 
   glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
   glBitmap(0,0,0,0,300,200,nil);
+
   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,6, 0,0,@Bitmap[0,3]);<font color="#000080">''//Gibt Bit-Spalten 25-32 aus(_)''</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,0]);<font color="#000080">''//Gibt Bit-Spalten 1-8 aus(F)''</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,1]);<font color="#000080">''//Gibt Bit-Spalten 9-16 aus(L)''</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,2]);<font color="#000080">''//Gibt Bit-Spalten 17-24 aus(O)''</font>
     glBitmap(8,8,0,0,10,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,3]);<font color="#000080">''//Gibt Bit-Spalten 25-32 aus(-)''</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(20,8,0,0,0,0,@Bitmap[0,0]);<font color="#000080">''// Gibt Bit-Spalten 1-20 aus(FL()''</font>
     glBitmap(0,0,0,0,-40,0,<b>nil</b>);      <font color="#000080"><i>//Zurück</i></font>
+
     glBitmap(0,0,0,0,-40,0,'''nil''');      <font color="#000080">''//Zurück''</font>
   glBitmap(0,0,0,0,-300,-200,<b>nil</b>); <font color="#000080"><i>//Zurück</i></font>
+
   glBitmap(0,0,0,0,-300,-200,'''nil'''); <font color="#000080">''//Zurück''</font>
  <b>end</b>;
+
  '''end''';
 
 
 
 
 
 
<br>
 
  
 
== Siehe auch ==
 
== Siehe auch ==
 
[[wglUseFontBitmaps]], [[glBegin]], [[glDrawPixels]], [[glRasterPos]], [[glPixelStore]], [[glPixelTransfer]]  
 
[[wglUseFontBitmaps]], [[glBegin]], [[glDrawPixels]], [[glRasterPos]], [[glPixelStore]], [[glPixelTransfer]]  
 +
 +
Texturloader "[[Glbitmap loader|glBitmap.pas]]"
  
 
[[Kategorie:GL|Bitmap]]
 
[[Kategorie:GL|Bitmap]]
 +
[[Kategorie:GL1.0|Bitmap]]

Aktuelle Version vom 22. März 2009, 11:56 Uhr

glBitmap

Info DGL.png Den Texturloader "glBitmap" von Lossy eX findet man unter Glbitmap_loader

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.
Warnung.png Entspricht nicht dem TBitmap aus Delphi!

Beschreibung

An der aktuellen Rasterposition wird überall dort, wo im Bitmap eine 1 ist, 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 Fenster-Koordianten, an denen das Bitmap gezeichnet wird, errechnet man durch:

Fenster.X := Rasterposition.X - Bitmap_Ursprung.X ;
Fenster.Y := Rasterposition.Y - Bitmap_Ursprung.Y ;
GlBitmap.png

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 Pixeloperatoren (wie etwa Alpha- und Tiefentest) erstellt worden.

Die Bitmaps brauchen zur Speicherung einer Bit-Zeile immer 32 Bit, egal wie viele 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


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

Texturloader "glBitmap.pas"