WebGL - 3D im Browser

 Home
 Blog
 WebGL Api Spickzettel
 WebGL Sicherheit

Tutorial
 0 : WebGL Browser
 1 : Das erste Dreieck
 2 : 3D-Mathematik
 3 : Farbe
 4 : Animation
 5 : Interaktion I
 6 : Texturen
 7 : Beleuchtung I
 8 : Interaktion II

Links
 WebGL Beispiele
 WebGL Frameworks
 ext. WebGL Tutorials


 Kontakt / Impressum
 webgl ([ät)] peter-strohm Punkt de

WebGL API-Funktionen

Eine unvollständige Übersicht über WebGL API-Funktionen auf deutsch.
Hier geht's zu den vollständigen Original-Spezifikationen

activeTexture
attachShader
bindAttribLocation
bindBuffer
bindFramebuffer
bindRenderbuffer
bindTexture
blendColor
blendEquation
blendEquationSeparate
blendFunc
blendFuncSeparate
bufferData
bufferSubData
checkFramebufferStatus
clear
clearColor
clearDepth
clearStencil
colorMask
compileShader
copyTexImage2D
copyTexSubImage2D
createBuffer
createProgram
createShader
createTexture
deleteProgram
deleteShader
disable
drawArrays
drawElements
enable
enableVertexAttribArray
getAttribLocation
getError
getProgramInfoLog
getProgramParameter
getShaderInfoLog
getShaderParameter
getUniformLocation
linkProgram
shaderSource
texImage2D
texParameteri
uniformMatrix4fv
useProgram


void activeTexture(GLenum texture)

textureDie texture-unit, die aktiviert werden soll (TEXTURE0 oder TEXTURE1 oder ...oder TEXTURE31)
Rückgabewert
void

activeTexture legt fest, welche Textur-Einheit (texture-unit) beim nächsten Aufruf von bindTexture verwendet wird. Die Anzahl der vorhandenen Textureinheiten ist vom WebGL-Standard nicht vorgegeben. Sie kann mit getParameter(MAX_TEXTURE_IMAGE_UNITS) abgefragt werden.

^^nach oben^^


void attachShader(WebGLProgram program, WebGLShader shader)

programDas WebGL-Program, dem der Shader hinzugefügt werden soll.
shaderDer Shader (Vertex oder Fragment)
Rückgabewert
void

attachShader verknüpft ein Shader-Objekt mit einem Program-Objekt.

^^nach oben^^


void bindAttribLocation(WebGLProgram program, GLuint index, DOMString name)

programDas WebGL-Program-Objekt in dem die Attribut-Index-Zuordnung erfolgen soll.
indexder vertex-Attribut Index
nameZeichenkette/Name des Attributs im Shader.
Rückgabewert
void

bindAttribLocation bindet ein Shader-Attribut (bzw.-location) an einen Attribut index (z.B wenn das Attribut vPosition Index 1 bekommen soll). bindAttribLocation wirkt sich erst beim nächsten Linken des WebGL-Programs aus!

^^nach oben^^


void bindBuffer(GLenum ziel, WebGLBuffer puffer)

zielArt des Puffers. Entweder ARRAY_BUFFER oder ELEMENT_ARRAY_BUFFER
pufferMeist ein WebGL-eigenes Array (z.B. Float32Array) mit einer Werten (Koordinaten, Farbwerte,...)
Rückgabewert
void

bindBuffer wird benutzt um einen Puffer als "aktiven" Puffer zu deklarieren. Nachfolgende Puffer-Operationen beziehen sich dann auf diesen Puffer (bis ein anderer aktiviert wird)

^^nach oben^^


void bindFramebuffer(GLenum target, WebGLFramebuffer framebuffer)

targetFRAMEBUFFER (immer!)
framebufferDer zu aktivierende Framebuffer oder null um den aktiven Framebuffer zu deaktivieren
Rückgabewert
void

bindFramebuffer Falls ein Framebuffer für Zeichenvorgänge jenseits der unmittelbaren Bildschirmdarstellung verwendet werden soll, muss dieser zunächst mit bindFramebuffer aktiviert werden. Folgende FrameBuffer-Befehle betreffen dann diesen FrameBuffer.

^^nach oben^^


void bindRenderbuffer(GLenum target, WebGLFramebuffer framebuffer)

targetRENDERBUFFER (immer!)
framebufferDer zu aktivierende Renderbuffer oder null um den aktiven Renderbuffer zu deaktivieren.
Rückgabewert
void

bindRenderbuffer Falls ein Framebuffer verwendet wird, kann als zusätzlicher Zwischenspeicher ein RenderBuffer genutzt werden, der seinerseitz zunächst mit bindRenderbuffer aktiviert werden muss. Folgende Renderbuffer-Befehle betreffen dann diesen Renderbuffer.

^^nach oben^^


void bindTexture(GLenum ziel, WebGLTexture textur)

zielTEXTURE_2D oder TEXTURE oder TEXTURE_CUBE_MAP oder TEXTURE_BINDING_CUBE_MAP oder TEXTURE_CUBE_MAP_POSITIVE_X oder TEXTURE_CUBE_MAP_NEGATIVE_X oder TEXTURE_CUBE_MAP_POSITIVE_Y oder TEXTURE_CUBE_MAP_NEGATIVE_Y oder TEXTURE_CUBE_MAP_POSITIVE_Z oder TEXTURE_CUBE_MAP_NEGATIVE_Z oder MAX_CUBE_MAP_TEXTURE_SIZE
texturdie zu aktivierende Textur
Rückgabewert
void

bindTexture aktiviert die übergebene Textur für die darauffolgenden Texturanweisungen.

^^nach oben^^


void blendColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)

redRotanteil der Farbe(0.0 .. 1.0)
greenGrünanteil der Farbe(0.0 .. 1.0)
blueBlauanteil der Farbe(0.0 .. 1.0)
alphaOpazität (1-Transparenz) der Farbe(0.0 .. 1.0)
Rückgabewert
void

blendColor gibt beim Überblenden verschieder Darstellungen/Szenen eine pauschale Farbe für die gesamte Darstellung vor (z.B. schwarz für ein "Fade-out")

^^nach oben^^


void blendEquation(GLenum mode)

modeFUNC_ADD oder FUNC_SUBTRACT oder FUNC_REVERSE_SUBTRACT (ggf. weitere?)
Rückgabewert
void

blendEquation gibt den Modus an, wie beim Überblenden Quell- und Zielfarbe kombiniert werden sollen.

^^nach oben^^


void blendEquationSeparate(GLenum modeRGB, GLenum modeAlpha)

modeRGBFUNC_ADD oder FUNC_SUBTRACT oder FUNC_REVERSE_SUBTRACT (ggf. weitere?)
modeAlphaFUNC_ADD oder FUNC_SUBTRACT oder FUNC_REVERSE_SUBTRACT (ggf. weitere?)
Rückgabewert
void

blendEquationSeparate gibt den Modus an, wie beim Überblenden Quell- und Zielfarbe kombiniert werden sollen. Im Gegensatz zu blendEquation können hier verschieden Modi für Farb- und Alphakanal verwendet werden.

^^nach oben^^


void blendFunc(GLenum sfactor, GLenum dfactor)

sfactorBewertung des Quell(Source-)Pixels
dfactorBewertung des Ziel(Destination-)Pixels
Rückgabewert
void

blendFunc stellt ein, wie Überblendungen berechnet werden sollen. Für die Quellpixel sind folgende Werte möglich: DST_COLOR oder ONE_MINUS_DST_COLOR oder SRC_ALPHA_SATURATE Für die Zielpixel sind folgende Werte möglich: ZERO oder ONE oder SCR_COLOR oder ONE_MINUS_SRC_COLOR oder SCR_ALPHA oder ONE_MINUS_SRC_ALPHA oder DST_ALPHA oder ONE_MINUS_DST_ALPHA

^^nach oben^^


void blendFuncSeparate(GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)

srcRGBBewertung des Farbkanals des Quell(Source-)Pixels
dstRGBBewertung des Farbkanals des Ziel(Destination-)Pixels
srcAlphaBewertung des Opazitätskanals des Quell(Source-)Pixels
dstAlphaBewertung des Opazitätskanals des Ziel(Destination-)Pixels
Rückgabewert
void

blendFuncSeparate stellt getrennt für Farb- und Alphakanal ein, wie Überblendungen berechnet werden sollen. Für die Quellpixel sind folgende Werte möglich: DST_COLOR oder ONE_MINUS_DST_COLOR oder SRC_ALPHA_SATURATE Für die Zielpixel sind folgende Werte möglich: ZERO oder ONE oder SCR_COLOR oder ONE_MINUS_SRC_COLOR oder SCR_ALPHA oder ONE_MINUS_SRC_ALPHA oder DST_ALPHA oder ONE_MINUS_DST_ALPHA

^^nach oben^^


void bufferData(GLenum target, ArrayBuffer data, GLenum usage)

targetARRAY_BUFFER oder ELEMENT_ARRAY_BUFFER
dataDie Daten in einem 1-D Array
usageSTREAM_DRAW oder STATIC_DRAW oder DYNAMIC_DRAW
Rückgabewert
void

bufferData füllt den Puffer, der zuletzt mit bindBuffer aktiviert wurde.

^^nach oben^^


void bufferSubData(GLenum target, GLintptr offset, ArrayBuffer data)

targetARRAY_BUFFER oder ELEMENT_ARRAY_BUFFER
offsetDer Offset vom Beginn des Puffers ab dem die Daten gespeichert werden sollen.
dataDie Daten in einem 1-D Array
Rückgabewert
void

bufferSubData füllt einen Anteil des Puffers, der zuletzt mit bindBuffer aktiviert wurde.

^^nach oben^^


GLenum checkFramebufferStatus(GLenum target)

targetFRAMEBUFFER (immer!)
Rückgabewert
GLenum
eine der folgenden Konstanten: FRAMEBUFFER_COMPLETE oder FRAMEBUFFER_INCOMPLETE_ATTACHMENT oder FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT oder FRAMEBUFFER_INCOMPLETE_DIMENSIONS oder FRAMEBUFFER_UNSUPPORTED

checkFramebufferStatus kann verwendet werden um den Status des zuletzt mit bindFrambuffer aktivierten Framebuffers auszulesen.

^^nach oben^^


void clear(GLbitfield mask)

maskMaske aus bitweise oder-verknüften Optionen. Zulässig sind COLOR_BUFFER_BIT (Farbwerte löschen) , DEPTH_BUFFER_BIT(Tiefeninformationen löschen, wichtig wenn der depth-test aktiv ist!) und STENCIL_BUFFER_BIT
Rückgabewert
void

clear löscht den gesamten Zeichenbereich in der Farbe, die zuvor mit clearColor bestimmt wurde.

^^nach oben^^


void clearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)

redFarbanteil rot (0.0 .. 1.0)
greenFarbanteil grün (0.0 .. 1.0)
blueFarbanteil blau (0.0 .. 1.0)
alphaAlphakanal, (1-Transparenz) (0.0 .. 1.0)
Rückgabewert
void

clearColor legt die Hintergrundfarbe fest, mit der die Zeichnungsfläche beim nächsten Aufruf von clear gelöscht wird.

^^nach oben^^


void clearDepth(GLclampf depth)

depth0.0 .. 1.0
Rückgabewert
void

clearDepth Gibt an, mit welchem Wert der Tiefenpuffer (DepthBuffer) beim nächsten Aufruf von clear(..) mit dem Parameter DEPTH_BUFFER_BIT initialisiert werden soll.

^^nach oben^^


void clearStencil(GLclampf s)

s0.0 .. (2^n-^1) wobei n die Bittiefe des Stencilpuffers ist.
Rückgabewert
void

clearStencil Gibt an, mit welchem Wert der Stencilpuffer (StencilBuffer) beim nächsten Aufruf von clear(..) mit dem Parameter STENCIL_BUFFER_BIT initialisiert werden soll.

^^nach oben^^


void colorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)

redtrue oder false
greentrue oder false
bluetrue oder false
alphatrue oder false
Rückgabewert
void

colorMask kann einzelne Farbkanäle bzw. den Alphakanal komplett aus- bzw. wieder einschalten.

^^nach oben^^


void compileShader(WebGLShader shader)

shaderder zu kompilierende Shader.
Rückgabewert
void

compileShader kompiliert den angegebenen Shader

^^nach oben^^


void copyTexImage2D(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)

targetArt der Textur (z.B. TEXTURE_2D)
levelmip level
internalformat ALPHA oder RGB oder RGBA oder LUMINANCE oder LUMINANCE_ALPHA
xX-Koordinate des Framebuffers der kopiert werden soll.
yY-Koordinate des Framebuffers der kopiert werden soll.
widthBreite des zu kopierenden Bereichs in Pixeln.
heightHöhe des zu kopierenden Bereichs in Pixeln.
borderwird (noch) nicht unterstützt. Muss 0 sein.
Rückgabewert
void

copyTexImage2D kopiert Daten aus dem ColorBuffer zurück in eine Textur. Kann verwendet werden wenn eine bereits gerenderte Szene als Textur (in einer anderen Szene) verwendet werden soll.

^^nach oben^^


void copyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)

targetArt der Textur (z.B. TEXTURE_2D)
levelmip level
xoffsetX-Startkoordinate der Zieltextur
yoffsetY-Startkoordinate der Zieltextur
xX-Koordinate des Framebuffers der kopiert werden soll.
yY-Koordinate des Framebuffers der kopiert werden soll.
widthBreite des zu kopierenden Bereichs in Pixeln.
heightHöhe des zu kopierenden Bereichs in Pixeln.
Rückgabewert
void

copyTexSubImage2D kopiert Teile der Daten aus dem ColorBuffer zurück in eine Textur. Kann verwendet werden wenn eine bereits gerenderte Szene als Textur (in einer anderen Szene) verwendet werden soll.

^^nach oben^^


WebGLBuffer createBuffer()

Rückgabewert
WebGLBuffer
das Puffer-Objekt.

createBuffer legt einen neuen Puffer an (der dann gefüllt und an die GPU übergeben werden kann)

^^nach oben^^


WebGLProgram createProgram()

Rückgabewert
WebGLProgram
das WebGLProgramObject, das die Shader beinhalten kann.

createProgram erzeugt ein neues WebGLProgram-Objekt.

^^nach oben^^


WebGLShader createShader(GLenum type)

typeFRAGMENT_SHADER oder VERTEX_SHADER
Rückgabewert
WebGLShader
das Shader-Objekt

createShader erzeugt einen neuen Shader (Vertex oder Fragment)

^^nach oben^^


WebGLTexture createTexture()

Rückgabewert
WebGLTexture
das neue Textur-Objekt

createTexture legt ein neues Textur-Objekt an.

^^nach oben^^


void deleteProgram(WebGLProgram program)

programDas WebGL-Program, das gelöscht werden soll.
Rückgabewert
void

deleteProgram löscht ein Program-Objekt

^^nach oben^^


void deleteShader(WebGLShader shader)

shaderder zu löschende Shader.
Rückgabewert
void

deleteShader löscht den angegebenen Shader.

^^nach oben^^


void disable(GLenum cap)

capCULL_FACE oder BLEND oder DITHER oder STENCIL_TEST oder DEPTH_TEST oder SCISSOR_TEST oder POLYGON_OFFSET_FILL oder SAMPLE_ALPHA_TO_COVERAGE oder SAMPLE_COVERAGE
Rückgabewert
void

disable schaltet einzelne Renderparameter aus. Siehe auch enable!

^^nach oben^^


void drawArrays(GLenum modus, GLint startIndex, GLsizei anzahl)

modusEiner der insgesamt 7 möglichen Puffer-Inhalte: POINTS, LINES, LINE_LOOP, LINE_STRIP, TRIANGLES, TRIANGLE_STRIP, TRIANGLE_FAN
startIndexDie Pufferadresse, ab der der Pufferinhalt gezeichnet werden soll.
anzahlDie Anzahl der Elemente(Vertizes) im Puffer (die gezeichnet werden sollen).
Rückgabewert
void

drawArrays veranlasst dass alle zuletzt gesetzten und aktivierten Puffer in den Shadern berechnet werden und letztlich gezeichnet werden.

^^nach oben^^


void drawElements(GLenum modus, GLsizei count, GLenum type, GLsizei anzahl)

modusEiner der insgesamt 7 möglichen Puffer-Inhalte: POINTS, LINES, LINE_LOOP, LINE_STRIP, TRIANGLES, TRIANGLE_STRIP, TRIANGLE_FAN
countDer Index ab dem der Pufferinhalt gezeichnet werden soll.
typeDer Datentyp der Indizes. I.d.R. UNSIGNED_BYTE oder UNSIGNED_SHORT. UNSIGNED_INT ist n_i_c_h_t verbindlicher Teil des WebGL-Standards. Daraus folgt, dass in einem draw-Befehl ohne weiteres nicht mehr als 65536 Indizes gezeichnet werden können.
anzahlDie Anzahl der Elemente(Vertizes) im IndexBuffer.
Rückgabewert
void

drawElements veranlasst dass alle zuletzt gesetzten und aktivierten Puffer in den Shadern berechnet werden und letztlich gezeichnet werden. Im Unterschied zu drawArrays wird hier ein indizierter Puffer verwendet(d. h. die Elemente werden nicht in der Reihenfolge verwendet, in der sie im Puffer stehen, sondern in der Reihenfolge die im gebundenen ELEMENT_ARRAY_BUFFER festgelegt ist.) Ist zuvor kein ELEMENT_ARRAY_BUFFER gebunden, wird der INVALID_OPERATION Fehler erzeugt.

^^nach oben^^


void enable(GLenum cap)

capCULL_FACE oder BLEND oder DITHER oder STENCIL_TEST oder DEPTH_TEST oder SCISSOR_TEST oder POLYGON_OFFSET_FILL oder SAMPLE_ALPHA_TO_COVERAGE oder SAMPLE_COVERAGE
Rückgabewert
void

enable schaltet einzelne Renderparameter ein. Siehe auch disable!

^^nach oben^^


void enableVertexAttribArray(GLuint index)

indexAdresse des Attributs im Shader (siehe getAttribLocation)
Rückgabewert
void

enableVertexAttribArray aktiviert ein Attribut zur Verwendung im Shader.

^^nach oben^^


GLint getAttribLocation(WebGLProgram program, DOMString uniformName)

programDas WebGL-Program, in dem das Attribut gesucht werden soll.
uniformNameBezeichner des Attributs im Shader
Rückgabewert
GLint
Die Adresse falls ein Attribut anhand des Namens gefunden wurde oder -1.

getAttribLocation ermittelt die Adresse eines Attributs innerhalb der Shader. Die Adresse wird benötigt um die entspechende Attribut-Variable mit Werten zu füllen.

^^nach oben^^


GLenum getError()

Rückgabewert
GLenum
NO_ERROR oder INVALID_ENUM oder INVALID_VALUE oder INVALID_OPERATION oder OUT_OF_MEMORY

getError ermittelt den zuletzt aufgetretenen (WebGL-)Fehler. Mit jedem Aufruf von getError wird der Fehler intern gelöscht.

^^nach oben^^


DOMString getProgramInfoLog(WebGLProgram program)

programDas WebGL-Program, dessen Log-Daten abgerufen werden sollen.
Rückgabewert
DOMString
Das Log-Protokoll der letzten Program-Aktionen.

getProgramInfoLog ruft die Log-Daten der letzten Program-Aktionen ab.

^^nach oben^^


verschieden getProgramParameter(WebGLProgram program, GLenum pname)

programDas WebGL-Program, dessen Parameter abgerufen werden soll.
pnameDELETE_STATUS, LINK_STATUS, VALIDATE_STATUS, ATTACHED_SHADERS, ACTIVE_ATTRIBUTS, ACTIVE_UNIFORMS
Rückgabewert
verschieden

getProgramParameter ruft Parameter des angegebenen WebGLProgram-Objekts ab.

^^nach oben^^


DOMString getShaderInfoLog(WebGLShader shader)

shaderder Shader dessen Log abgerufen werden soll.
Rückgabewert
DOMString
Das ShaderInfoLog.

getShaderInfoLog ruft das Log des Shaders ab und gibt dieses als String zurück.

^^nach oben^^


verschiedene getShaderParameter(WebGLShader shader, GLenum pname)

shaderder Shader
pnameParametertyp der abgefrag werden soll. SHADER_TYPE oder DELETE_STATUS oder COMPILE_STATUS
Rückgabewert
verschiedene

getShaderParameter

^^nach oben^^


WebGLUniformLocation getUniformLocation(WebGLProgram program, DOMString uniformName)

programDas WebGL-Program, in dem die Uniform gesucht werden soll.
uniformNameBezeichner der Uniform im Shader
Rückgabewert
WebGLUniformLocation
Die Adresse falls eine Uniform anhand des Namens gefunden wurde oder -1.

getUniformLocation ermittelt die Adresse einer Uniform innerhalb der Shader. Die Adresse wird benötigt um die entspechende Uniform-Variable mit Werten zu füllen.

^^nach oben^^


void linkProgram(WebGLProgram program)

programDas WebGL-Program, das gelinkt werden soll.
Rückgabewert
void

linkProgram erstellt (linkt) das übergebene Programmobjekt.

^^nach oben^^


void shaderSource(WebGLShader shader, DOMString quelltext)

shaderder Shader.
quelltextder Quelltext als String.
Rückgabewert
void

shaderSource übergibt den Shader-Quelltext an den Shader.

^^nach oben^^


void texImage2D(GLenum ziel, GLint level, GLenum internalFormat, GLenum format, GLenum typ, HTMLImageElement image)

zielTEXTURE_2D oder TEXTURE oder TEXTURE_CUBE_MAP oder TEXTURE_BINDING_CUBE_MAP oder TEXTURE_CUBE_MAP_POSITIVE_X oder TEXTURE_CUBE_MAP_NEGATIVE_X oder TEXTURE_CUBE_MAP_POSITIVE_Y oder TEXTURE_CUBE_MAP_NEGATIVE_Y oder TEXTURE_CUBE_MAP_POSITIVE_Z oder TEXTURE_CUBE_MAP_NEGATIVE_Z oder MAX_CUBE_MAP_TEXTURE_SIZE
levelmip-level der Textur
internalFormatDEPTH_COMPONENT oder ALPHA oder RGB oder RGBA oder LUMINANCE oder LUMINANCE_ALPHA
formatDEPTH_COMPONENT oder ALPHA oder RGB oder RGBA oder LUMINANCE oder LUMINANCE_ALPHA
typFormat der einzelnen Werte UNSIGNED_BYTE
imageein Image-Objekt aus dem HTML-DOM.
Rückgabewert
void

texImage2D über gibt die Texturdaten (die Grafik) an WebGL.

^^nach oben^^


void texParameteri(GLenum ziel, GLenum pname, GLint param, )

zielTEXTURE_2D oder TEXTURE oder TEXTURE_CUBE_MAP oder TEXTURE_BINDING_CUBE_MAP oder TEXTURE_CUBE_MAP_POSITIVE_X oder TEXTURE_CUBE_MAP_NEGATIVE_X oder TEXTURE_CUBE_MAP_POSITIVE_Y oder TEXTURE_CUBE_MAP_NEGATIVE_Y oder TEXTURE_CUBE_MAP_POSITIVE_Z oder TEXTURE_CUBE_MAP_NEGATIVE_Z oder MAX_CUBE_MAP_TEXTURE_SIZE
pnameTEXTURE_MAG_FILTER oder TEXTURE_MIN_FILTER oder TEXTURE_WRAP_S oder TEXTURE_WRAP_T
paramNEAREST oder LINEAR
Rückgabewert
void

texParameteri setzt Parameter für die Texturdarstellung.

^^nach oben^^


void uniformMatrix4fv(WebGLUniformLocation uniformAdresse, GLboolean transpose, Float32Array flatMatrix)

uniformAdresseAdresse der Uniform-Matrix im Shader (siehe getUniformLocation)
transposemuss laut Spezifikation false sein!
flatMatrixDie zu übergebende Matrix, ggf. transponiert, in einem eindimensionalen Array.
Rückgabewert
void

uniformMatrix4fv

^^nach oben^^


void useProgram(WebGLProgram program)

programDas WebGL-Program, das aktiviert werden soll.
Rückgabewert
void

useProgram aktiviert das übergebene Program-Objekt.

^^nach oben^^

Kommentar hinterlassen:

Name
Email Die Emailadresse wird nicht veröffentlicht und nicht weitergegeben
Kommentar

>> Startseite <<   ^ Seitenanfang ^    
Fehler? Kommentare? webgl ([ät)] peter-strohm Punkt de