<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>PyPede</title>
	<atom:link href="http://pypede.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://pypede.wordpress.com</link>
	<description>Python Powered Programming</description>
	<lastBuildDate>Tue, 27 Sep 2011 23:18:13 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='pypede.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>PyPede</title>
		<link>http://pypede.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://pypede.wordpress.com/osd.xml" title="PyPede" />
	<atom:link rel='hub' href='http://pypede.wordpress.com/?pushpress=hub'/>
		<item>
		<title>OpenGL in Pygame Tutorial &#8211; Part 3</title>
		<link>http://pypede.wordpress.com/2009/09/05/opengl-in-pygame-tutorial-part-3/</link>
		<comments>http://pypede.wordpress.com/2009/09/05/opengl-in-pygame-tutorial-part-3/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 18:24:51 +0000</pubDate>
		<dc:creator>pede</dc:creator>
				<category><![CDATA[OpenGL Tutorial]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[pygame]]></category>
		<category><![CDATA[pyopengl]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[vertex]]></category>

		<guid isPermaLink="false">http://pypede.wordpress.com/?p=104</guid>
		<description><![CDATA[Seid Ihr zum ersten mal hier, dann startet Ihr am besten mit Part 1. Moin moin und willkommen zum dritten Part dieses Tutorials. In den ersten beiden Parts haben wir die Pygame-Segel gesetzt, nun geht es etwas schneller voran. Diesmal erobern wir mit unserem Tutorial-Kutter das OpenGL-Meer. Am Ende dieses Parts wird endlich etwas zu [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pypede.wordpress.com&amp;blog=9221412&amp;post=104&amp;subd=pypede&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em>Seid Ihr zum ersten mal hier, dann startet Ihr am besten mit <a href="http://pypede.wordpress.com/2009/08/30/opengl-in-pygame-tutorial-part-1/">Part 1</a>.</em></p>
<p>Moin moin und willkommen zum dritten Part dieses Tutorials. In den ersten beiden Parts haben wir die Pygame-Segel gesetzt, nun geht es etwas schneller voran. Diesmal erobern wir mit unserem Tutorial-Kutter das OpenGL-Meer. Am Ende dieses Parts wird endlich etwas zu sehen sein, und zwar: Ein Viereck!</p>
<p>Damit wir die OpenGL-Schnittstelle nutzen können, importieren wir die PyOpenGL-Module. GL stellt einerseits OpenGL-Funktionen bereit, die mit gl beginnen (Beispiel: <code>glVertex()</code>) und andererseits Konstanten, die mit GL_ beginnen (Beispiel: <code>GL_QUADS</code>).<br />
Mit GLU (<strong>GL U</strong>tility Library) werden weitere hilfreiche Funktionen und Konstanten nach dem gleichen Präfixmuster importiert (Beispiele: <code>gluScaleImage</code>, <code>GLU_FILL</code>).</p>
<p><pre class="brush: python;">
from OpenGL.GL import *
from OpenGL.GLU import *
</pre></p>
<p>Als nächstes definieren wir eine Funktion namens reshape(), die jedesmal aufgerufen werden soll, wenn das Fenster neu angezeigt wird, oder die Fenstergröße verändert wird.<br />
<code>glViewport</code> legt dabei ein Rechteck fest, in dessen Bereich wir unsere Vierecke zeichnen wollen. Es erstreckt sich von unten links (0,0) bis oben rechts (width,height, also 800,600).<br />
Die Zeilen 3-6 beschäftigen sich mit Matrizen. Dazu mehr im nächsten Part.</p>
<p><pre class="brush: python;">
def reshape((width,height)):
    glViewport(0, 0, width, height)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    gluPerspective(60, 1.0*width/height, 0.1, 1000.0)
    glMatrixMode(GL_MODELVIEW)
</pre></p>
<p>Nun definieren wir eine init() Funktion, die zu Beginn des Programms aufgerufen wird und einige Eigenschaften unserer OpenGL-Umgebung festlegt. <code><strong>glClearColor</strong></code> legt eine weiße Hintergrundfarbe fest und erwartet dabei 4 Parameter: Rot-, Grün- und Blau-Anteil sowie den Alphawert.<br />
Außerdem wird hier unsere reshape()-Funktion zum ersten mal aufgerufen.</p>
<p><pre class="brush: python;">
def init():
    glClearColor(1.0, 1.0, 1.0, 1.0)
    reshape(screen)
</pre></p>
<p>Später im Tutorial fügen wir hier noch weitere OpenGL-Funktionen hinzu. Gleich gehts ans Zeichnen, aber zunächst ein wenig OpenGL-Vokabular:</p>
<p><strong>Primitive</strong><br />
Primitives sind geometrische Grundformen, wie zum Beispiel Punkte, Linien oder Polygone. Diese lassen sich zusammensetzen und ergeben dann komplexere geometrische Formen.</p>
<p><strong>Vertex</strong><br />
Ein Vertex (Plural: Vertices) ist ein Eckpunkt eines Primitives, dessen Position mit Koordinaten festgelegt wird. In OpenGL können mindestens zwei Koordinaten (X,Y) und maximal drei Koordinaten (X,Y,Z,W) angegeben werden, wobei X,Y und Z die 3D-Koordinaten sind. W findet hier zunächst keine Beachtung. Bei 2D-Darstellungen ist die Z-Koordinate immer 0.</p>
<p><strong>Polygon</strong><br />
Ein Polygon ist eine aus mindestens drei Vertices bestehendes Vieleck. Das einfachste Polygon ist das Dreieck</p>
<p>Gentlemen, take your Bleistifts, das Malen kann beginnen. Zunächst definieren wir eine draw-Funktion. In dieser wird zunächst der Bildschirm geleert und mit der oben definierten Hintergrundfarbe (weiß) gefüllt. </p>
<p><pre class="brush: python;">
def draw():
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
    ...
</pre></p>
<p>Die draw-Funktion geht noch weiter. In OpenGL gibt es eine &#8222;virtuelle Kamera&#8220;, die aufnimmt, was später am Bildschirm zu sehen ist. Mit <code>gluLookAt</code> können wir Position und Ausrichtung (<em>orientation</em>) dieser Kamera bestimmen. Die ersten drei Parameter (0, 0, 6) bestimmen die Koordinaten der Position, also 6 Einheiten die Z-Achse entlang (Richtung Betrachter). Wir gehen mit der Kamera also im Prinzip 6 &#8222;Schritte&#8220; zurück, damit wir etwas sehen.</p>
<p>Die nächsten drei Parameter (0, 0, -100) bestimmen die Koordinaten eines Punktes, auf den die Kamera gerichtet sein soll. In unserem Fall ein negativer Wert auf der Z-Achse (in den Bildschirm hinein). Die letzten drei Parameter (0, 1, 0) bestimmen, wo oben ist. Hier also die Y-Achse gerade nach oben.<br />
Die Funktion <code>glLoadIdentity()</code> wird aufgerufen, um die Einheitsmatrix (<em>identity matrix</em>) zu laden. Somit wird bestimmt, dass die nachfolgende Funktion vom Ursprung des Koordinatensystems (0,0,0) ausgehen soll.</p>
<p><pre class="brush: python;">
    ...
    glLoadIdentity()
    gluLookAt(0, 0, 6, 0, 0, -100, 0, 1 ,0)
    ...
</pre></p>
<p>Jetzt zeichnen wir die ersten Primitives. Innerhalb von <code>glBegin(GL_QUADS)</code> und glEnd() bestimmen wir die Vertices unseres Vierecks (Quads). <code>glBegin</code> erwartet als Parameter den Typen des Primitives. Zum Beispiel GL_POLYGON für Polygone oder GL_QUADS für Vierecke. Es existiert eine sehr gute vollständige <a href="http://wiki.delphigl.com/index.php/glBegin#Parameter">Liste der Primitive-Typen (inkl. Erläuterungen)</a> im Wiki der Delphi-OpenGL-Community.</p>
<p>Als Nächstes bestimmen wir blau (0.0, 0.0, 1.0) als Füllfarbe. Anschließend werden nacheinander die vier Vertices des ersten Vierecks bestimmt. glVertex2f erwartet dabei die X,Y Koordinaten eines Vertex als Parameter.</p>
<p>Später werden wir sehen, dass es effektivere Möglichkeiten gibt, Primitives zu zeichnen. Zum Beispiel <em>Vertex-Arrays</em>. Aber zu Beginn ist es so in Ordnung. Wir wollen ja nur ein Viereck darstellen.</p>
<p><pre class="brush: python;">
    ...
    glBegin(GL_QUADS)
    glColor(0, 0, 1.0)
    glVertex2f(-2, 2)  # oben links
    glVertex2f(2, 2)   # oben rechts
    glVertex2f(2, -1)  # unten rechts
    glVertex2f(-2, -1) # unten links
    glEnd()   

    pygame.display.flip()
</pre></p>
<p><code>pygame.display.flip()</code> bewirkt einen <em>OpenGL Buffer Swap</em>. Dazu später mehr, wenn es zu Bewegtbildern kommt. Zunächst genügt die Erklärung, dass diese Funktion den Bildschirminhalt aktualisiert.</p>
<p>An dieser Stelle ein kleiner Einschub zum Thema OpenGL-Syntax. Der Funktionsname <code>glVertex2f</code> sieht ja schon etwas eigenartig aus. Die Erklärung ist allerdings recht simpel. Das angehängte <code><strong>2f</strong></code> bedeutet, dass die Funktion <strong>2</strong> Parameter (X,Y Koordinaten) des OpenGL-Datentyps <strong>f</strong>loat erwartet. Es gibt von vielen OpenGL Funktionen verschiedene Versionen (zum Beispiel <code>glVertex3f</code>, <code>glVertex4i</code>, &#8230;).</p>
<p>Nun rufen wir die draw-Funktion innerhalb unseres <em>main loops</em> auf. Das bewirkt, dass das Bild mit jedem Schleifendurchlauf einmal aktualisiert wird. Das macht bisher noch nicht soviel Sinn, aber wenn später Bewegung ins Spiel kommt, ist es unverzichtbar.</p>
<p><pre class="brush: python;">
def main():
    init()
    maxfps = 100 
    clock = pygame.time.Clock()
    while True:
        clock.tick(maxfps)
        draw()
        get_event()

if __name__ == &quot;__main__&quot;:
    main()
</pre></p>
<p>So sieht unser Ergebnis aus, wenn wir das Programm ausführen:</p>
<div id="attachment_199" class="wp-caption alignnone" style="width: 310px"><a href="http://pypede.files.wordpress.com/2009/09/opengl_tut3.png"><img src="http://pypede.files.wordpress.com/2009/09/opengl_tut3.png?w=300&#038;h=232" alt="Tutorial Part 3 - Ergebnis" title="opengl_tut3-1" width="300" height="232" class="size-medium wp-image-199" /></a><p class="wp-caption-text">Tutorial Part 3 - Ergebnis</p></div>
<p><a href="http://paste.pocoo.org/show/138219/" target="_blank">Der vollständige Quellcode zum dritten Tutorial-Part (ausgelagert)</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pypede.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pypede.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pypede.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pypede.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pypede.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pypede.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pypede.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pypede.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pypede.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pypede.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pypede.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pypede.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pypede.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pypede.wordpress.com/104/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pypede.wordpress.com&amp;blog=9221412&amp;post=104&amp;subd=pypede&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pypede.wordpress.com/2009/09/05/opengl-in-pygame-tutorial-part-3/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d4538584c905370e67962be7989f60a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pede</media:title>
		</media:content>

		<media:content url="http://pypede.files.wordpress.com/2009/09/opengl_tut3.png?w=300" medium="image">
			<media:title type="html">opengl_tut3-1</media:title>
		</media:content>
	</item>
		<item>
		<title>OpenGL in Pygame Tutorial &#8211; Part 2</title>
		<link>http://pypede.wordpress.com/2009/09/02/opengl-in-pygame-tutorial-part-2/</link>
		<comments>http://pypede.wordpress.com/2009/09/02/opengl-in-pygame-tutorial-part-2/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 12:50:45 +0000</pubDate>
		<dc:creator>pede</dc:creator>
				<category><![CDATA[OpenGL Tutorial]]></category>
		<category><![CDATA[pygame]]></category>
		<category><![CDATA[pyopengl]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://pypede.wordpress.com/?p=17</guid>
		<description><![CDATA[Seid Ihr zum ersten mal hier, dann startet Ihr am besten mit Part 1. Ziel von Part 2 ist das simple Anzeigen eines Pygame-Fensters und die Möglichkeit dieses wieder zu schließen. Zunächst importieren wir das Pygame-Paket und alle seine Untermodule (z.B. pygame.display, pygame.sound, &#8230;), sowie die exit-Funktion aus dem sys-Modul. Hier wird die Auflösung des [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pypede.wordpress.com&amp;blog=9221412&amp;post=17&amp;subd=pypede&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><em>Seid Ihr zum ersten mal hier, dann startet Ihr am besten mit <a href="http://pypede.wordpress.com/2009/08/30/opengl-in-pygame-tutorial-part-1/">Part 1</a>.</em></p>
<p>Ziel von Part 2 ist das simple Anzeigen eines Pygame-Fensters und die Möglichkeit dieses wieder zu schließen. </p>
<p>Zunächst importieren wir das Pygame-Paket und alle seine Untermodule (z.B. pygame.display, pygame.sound, &#8230;), sowie die exit-Funktion aus dem sys-Modul.</p>
<p><pre class="brush: python;">
import pygame
from sys import exit
</pre></p>
<p>Hier wird die Auflösung des Fensters in einem Tupel als Variable <code>screen</code> gespeichert:</p>
<p><pre class="brush: python;">
screen = (800,600)
</pre></p>
<p>In folgender Zeile werden alle Untermodule von pygame initialisiert:</p>
<p><pre class="brush: python;">
pygame.init()
</pre></p>
<p>Die Funktion im folgenden Code-Abschnitt erstellt eine Pygame-Oberfläche und erwartet drei Parameter, von denen die letzten beiden optional sind. Der erste Parameter bestimmt die Auflösung (Variable <code>screen</code>). Im zweiten (optionalen) Parameter legen wir Flags fest, die bestimmen, dass eine OpenGL-Oberfläche erstellt werden soll, die einen doppelten Puffer nutzt. Es gibt noch weitere Flags, die zunächst nicht wichtig sind. Der dritte (optionale) Parameter ist die Farbtiefe in Bit.<br />
Die Funktion <code>pygame.display.set_mode</code> gibt ein Oberflächen-Objekt (surface object) zurück, das wir in der Variable <code>surface</code> speichern.</p>
<p><pre class="brush: python;">
surface = pygame.display.set_mode(screen, pygame.OPENGL|pygame.DOUBLEBUF, 16)
</pre></p>
<p>Als nächstes geben wir dem Pygame-Fenster einen Namen, der in der Titelleiste des Fensters erscheint.</p>
<p><pre class="brush: python;">
pygame.display.set_caption(&quot;Hallo Welt!&quot;)
</pre></p>
<p>Innerhalb der Funktion get_input() werden Events erkannt und bearbeitet. Ein Event kann ein Tastenanschlag auf der Tastatur sein, oder in unserem Beispiel das Klicken auf den Schließen-Button des Fensters.</p>
<p><pre class="brush: python;">
def get_event():
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
</pre></p>
<p>Nun benötigen wir den <em>main loop</em>, damit das Fenster sichtbar bleibt. Hier wartet das Programm auf Events. Der Codeabschnitt clock.tick(maxfps) sorgt dafür, dass Frames per Second (FPS) begrenzt werden. Das ist deshalb sinnvoll, um die CPU-Auslastung gering zu halten. Andernfalls würde die Schleife so schnell es geht durchlaufen werden. Später bringen wir hier weitere Dinge unter.</p>
<p><pre class="brush: python;">
def main():
    maxfps = 100 
    clock = pygame.time.Clock()
    while True:
        clock.tick(maxfps)
        get_event()

if __name__ == &quot;__main__&quot;:
    main()
</pre></p>
<p>Führt man das Programm aus, erscheint ein schwarzes Fenster mit dem Titel &#8222;Hallo Welt!&#8220;, das quasi danach schreit, gleich wieder geschlossen zu werden <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Aber keine Angst, im nächsten Part wird es mehr zu sehen geben!</p>
<p>Hier noch einmal der komplette Quellcode aus Part 2 des Tutorials:</p>
<p><pre class="brush: python;">
import pygame
from sys import exit

screen = (800,600)

pygame.init()
surface = pygame.display.set_mode(screen, pygame.OPENGL|pygame.DOUBLEBUF, 16)
pygame.display.set_caption(&quot;Hallo Welt!&quot;)

def get_event():
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()

def main():
    maxfps = 100 
    clock = pygame.time.Clock()
    while True:
        clock.tick(maxfps)
        get_event()

if __name__ == &quot;__main__&quot;:
    main()
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pypede.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pypede.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pypede.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pypede.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pypede.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pypede.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pypede.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pypede.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pypede.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pypede.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pypede.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pypede.wordpress.com/17/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pypede.wordpress.com/17/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pypede.wordpress.com/17/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pypede.wordpress.com&amp;blog=9221412&amp;post=17&amp;subd=pypede&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pypede.wordpress.com/2009/09/02/opengl-in-pygame-tutorial-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d4538584c905370e67962be7989f60a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pede</media:title>
		</media:content>
	</item>
		<item>
		<title>OpenGL in Pygame Tutorial &#8211; Part 1</title>
		<link>http://pypede.wordpress.com/2009/08/30/opengl-in-pygame-tutorial-part-1/</link>
		<comments>http://pypede.wordpress.com/2009/08/30/opengl-in-pygame-tutorial-part-1/#comments</comments>
		<pubDate>Sun, 30 Aug 2009 17:58:05 +0000</pubDate>
		<dc:creator>pede</dc:creator>
				<category><![CDATA[OpenGL Tutorial]]></category>
		<category><![CDATA[pygame]]></category>
		<category><![CDATA[pyopengl]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://pypede.wordpress.com/?p=27</guid>
		<description><![CDATA[An dieser Stelle startet mein Tutorial zu OpenGL in Pygame. Das Ziel dieses Tutorials ist ein in Python 2.6 geschriebenes Programm, das ein 3D-Objekts darstellt, das sich mit Hilfe eines Gamepads bewegen lässt. Das Hauptaugenmerk liegt dabei auf OpenGL. Wenn Ihr folgen wollt, solltet ihr bereits Python-Kenntnisse besitzen. Pygame-Kenntnisse sind nicht unbedingt Voraussetzung aber hilfreich, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pypede.wordpress.com&amp;blog=9221412&amp;post=27&amp;subd=pypede&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>An dieser Stelle startet mein Tutorial zu OpenGL in Pygame. Das Ziel dieses Tutorials ist ein in <em>Python 2.6</em> geschriebenes Programm, das ein 3D-Objekts darstellt, das sich mit Hilfe eines Gamepads bewegen lässt. Das Hauptaugenmerk liegt dabei auf OpenGL.</p>
<p>Wenn Ihr folgen wollt, solltet ihr bereits Python-Kenntnisse besitzen. Pygame-Kenntnisse sind nicht unbedingt Voraussetzung aber hilfreich, da ich nicht so ausführlich darauf eingehe. OpenGL ist für mich neu und ich versuche beim Schreiben des Tutorials selbst dazuzulernen und setze dementsprechend keine OpenGL-Kenntnisse voraus.</p>
<p>Zunächst ein paar Worte zu OpenGL, PyOpenGL und Pygame:</p>
<p><strong>OpenGL</strong> (Open Graphics Library) ist eine Schnittstelle (API) zur Entwicklung von 2D- und 3D-Grafik. Derzeit befindet sich OpenGL in einer Umbruchsphase. Das heißt, viele Befehle aus der mittlerweile 17 Jahre alten API werden ausgemistet, sodass zukünftig weitaus perfomantere Techniken genutzt werden, um anderen APIs &#8211; wie zum Beispiel DirectX &#8211; wieder Konkurrenz machen zu können. In diesem Tutorial werden allerdings die klassischen Programmiertechniken zum Einsatz kommen, da der Einstieg in die 3D-Programmierung damit in meinen Augen wesentlich verständlicher ist.</p>
<p><strong>PyOpenGL</strong> ist ein plattformunabhängiges Python-Binding zu OpenGL. Es ist wie eine Hülle (Wrapper) um OpenGL zu verstehen, die Befehle unter Python zur Verfügung stellt. Version in diesem Tutorial: <em>PyOpenGL 3.0.0</em> (unterstützt OpenGL 1.1 bis 3.0): <a href="http://pyopengl.sourceforge.net/">http://pyopengl.sourceforge.net</a></p>
<p><strong>PyGame</strong> ist eine Sammlung von Modulen, die vor allem der Spieleentwicklung dienen. Es sind zum Beispiel Module zur Steuerung von Grafik und Sound enthalten, sowie Module zum Abfragen von Eingabegeräte wie Maus, Tastatur oder Gamepad. Version in diesen Tutorial: <em>Pygame 1.8.1</em>: <a href="http://www.pygame.org">http://www.pygame.org</a></p>
<p>Pygame stellt also quasi das Grundgerüst unseres Programms dar. Deshalb gehe ich in Part 2 überwiegend auf Pygame ein und lege den Grundstein für das weitere Vorgehen. Später folgen dann die 3D-Animationen in OpenGL.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pypede.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pypede.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pypede.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pypede.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pypede.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pypede.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pypede.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pypede.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pypede.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pypede.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pypede.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pypede.wordpress.com/27/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pypede.wordpress.com/27/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pypede.wordpress.com/27/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pypede.wordpress.com&amp;blog=9221412&amp;post=27&amp;subd=pypede&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pypede.wordpress.com/2009/08/30/opengl-in-pygame-tutorial-part-1/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d4538584c905370e67962be7989f60a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pede</media:title>
		</media:content>
	</item>
		<item>
		<title>Python, OpenGL, Django</title>
		<link>http://pypede.wordpress.com/2009/08/28/python-opengl-django/</link>
		<comments>http://pypede.wordpress.com/2009/08/28/python-opengl-django/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 20:54:10 +0000</pubDate>
		<dc:creator>pede</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://pypede.wordpress.com/?p=3</guid>
		<description><![CDATA[Hallo Welt! Nun ist er da, mein neuer Blog. Was soll das hier nur werden? Also: In Zukunft wird es hier Blogposts geben, die sich mit Python beschäftigen. Zum einen werde ich versuchen, ein OpenGL-Projekt, das ich für die Uni durchführen werde, hier zu dokumentieren. Bisher weiß ich ganz grob, in welche Richtung das gehen [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pypede.wordpress.com&amp;blog=9221412&amp;post=3&amp;subd=pypede&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hallo Welt!</p>
<p>Nun ist er da, mein neuer Blog. Was soll das hier nur werden? Also: In Zukunft wird es hier Blogposts geben, die sich mit Python beschäftigen. Zum einen werde ich versuchen, ein OpenGL-Projekt, das ich für die Uni durchführen werde, hier zu dokumentieren. Bisher weiß ich ganz grob, in welche Richtung das gehen soll (3D Animation, Gamepad-Steuerung).</p>
<p>Ansonsten beschäftige ich mich momentan intensiv mit dem Web-Framework Django, und werde ab und zu mal ein paar Kniffe präsentieren, die das Leben einfacher machen.</p>
<p>Habt Ihr Fragen, Anregungen, Kritik oder Ähnliches: Immer her damit! Feedback ist mir sehr wichtig!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/pypede.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/pypede.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/pypede.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/pypede.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/pypede.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/pypede.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/pypede.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/pypede.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/pypede.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/pypede.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/pypede.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/pypede.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/pypede.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/pypede.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=pypede.wordpress.com&amp;blog=9221412&amp;post=3&amp;subd=pypede&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://pypede.wordpress.com/2009/08/28/python-opengl-django/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/4d4538584c905370e67962be7989f60a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">pede</media:title>
		</media:content>
	</item>
	</channel>
</rss>
