| Im folgenden Beispiel erschaffen wir einen Fensterrahmen und eine Fensterscheibe. Dem Rahmen geben wir eine schöne Holz-Textur und auf der Scheibe sollen Wolken vorbeiziehen. Dazu müssen natürlich die Texturen in der Prozedur CreateGLWindow geladen werden. Call LoadTextureS(App.Path & "\fenster.bmp", 1) Call LoadTextureS(App.Path & "\wolkene.bmp", 2) Listing 1: Laden der Fenstertexturen Dann ändern wir die Sub Main und kreieren die beiden beschriebenen Flächen. Beide Fläche sind auf der X und Y-Achse zentriert und liegen auf der Z-Achse in der gleichen Ebene. Sie unterscheiden sich nur durch ihre Abmessungen. Das sollte Ihnen nach den vergangenen Lektionen keine Schwierigkeiten bereiten. Wichtig sind die Wechsel zwischen den Matrizen mit der Funktion glMatrixMode. Die Variable tGlid dient nur dem Hochzählen der Bewegung in sehr kleinen Schritten. Public Sub Main()
Static tGlid As GLfloat
Dim frm As Form
PrgRun = True Set frm = New Form1 frm.ScaleMode = vbPixels
If CreateGLWindow(frm, 640, 480, 16) Then Do glClear clrColorBufferBit Or clrDepthBufferBit glLoadIdentity
glTranslatef -1#, 0#, -8#
glBindTexture GL_TEXTURE_2D, Texture(1) glBegin bmQuads glTexCoord2f 1#, 1#: glVertex3f 2#, 2#, 1# glTexCoord2f 0#, 1#: glVertex3f -2#, 2#, 1# glTexCoord2f 0#, 0#: glVertex3f -2#, -2#, 1# glTexCoord2f 1#, 0#: glVertex3f 2#, -2#, 1# glEnd
glMatrixMode GL_TEXTURE glLoadIdentity glTranslatef tGlid, 0, 0 glMatrixMode GL_MODELVIEW
glBindTexture GL_TEXTURE_2D, Texture(2) glBegin bmQuads glTexCoord2f 1#, 1#: glVertex3f 1.335, 1.49, 1# glTexCoord2f 0#, 1#: glVertex3f -1.3, 1.49, 1# glTexCoord2f 0#, 0#: glVertex3f -1.3, -1.4, 1# glTexCoord2f 1#, 0#: glVertex3f 1.335, -1.4, 1# glEnd
glMatrixMode GL_TEXTURE glLoadIdentity glMatrixMode GL_MODELVIEW
SwapBuffers (frm.hDC) DoEvents
tGlid = tGlid + 0.00005 Loop While PrgRun
If hrc <> 0 Then wglMakeCurrent 0, 0 wglDeleteContext (hrc) End If
Unload frm
Set frm = Nothing
End
End If
End Sub Listing 2: Sub Main für ein animiertes Fenster Wie Sie sehen, ist der Aufwand minimal, der Effekt im Verhältnis aber gewaltig. Natürlich lassen sich Texturen ebenso wie Flächen auch in alle anderen Richtungen bewegen. Und weil es so schön ist, setzen wir noch einen drauf. |