<html>
<head>
<title>2 pamoka
</title>
<meta http-equiv=Content-Language content=lt>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<link href="global.css" rel="stylesheet" type="text/css" />
<link href="print.css" rel="stylesheet" type="text/css" media="print" />
<style>
<!--//
a:link {font-family:Verdana,Tahoma,Helvetica; font-weight:normal; color:#008000; text-decoration:none; }
a:active {font-family:Verdana,Tahoma,Helvetica; font-weight:normal; color:#008000; text-decoration:none; }
a:visited {font-family:Verdana,Tahoma,Helvetica; font-weight:normal; color:#008000; text-decoration:none; }
a:hover {font-family:Verdana,Tahoma,Helvetica; font-weight:normal; color:#ee0033; text-decoration:none; }
ul, li {font-family:Verdana,Tahoma,Helvetica; font-weight:normal; text-align:justify; margin: 6px 2% 6px; }
p, body {font-family:Verdana,Tahoma,Helvetica; font-weight:normal; }
//-->
</style>
</head>
<body>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table1">
<tr>
<td class="back3" vAlign="top" width="100%"><font class="text">Pirmojoje pamokoje iÅ¡mokote sukurti OpenGL langÄ
. Å ioje
pamokoje išmokysiu jus "piešti" trikampius ir keturkampius. Sukursime trikampį, naudodami GL_TRIANGLES ir keturkampį,
naudodami GL_QUADS.
<br>
<br>
Panaudodami kodÄ
iÅ¡ pirmosios pamokos, pakeisime DrawGLScene() procedÅ«rÄ
. AÅ¡ perraÅ¡ysiu visÄ
žemiau esanÄiÄ
procedÅ«rÄ
. Jei
norite redaguoti paskutiniÄ
jÄ
pamokÄ
, galite pakeisti DrawGLScene() procedÅ«rÄ
žemiau esanÄiu kodu, arba tiesiog pridÄti eilutes,
kurių nÄra praeitoje pamokoje.
</font></td>
<td class="r"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table2">
<tr>
<td class="bl"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="bc" width="100%">
<img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="br"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<pre>int DrawGLScene(GLvoid)
<font class="theme">// Äia atliekame pieÅ¡imo procedÅ«rÄ
</font>
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
<font class="theme">// IÅ¡valome ekranÄ
ir gylio buferį
</font>
glLoadIdentity();
<font class="theme">// VÄl nustatome vaizdÄ
</font>
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table3">
<tr>
<td class="tl"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="tc" width="100%">
<img alt="" src="vaizdai/blank.gif" width="100%" height="28"></td>
<td class="tr"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table4">
<tr>
<td class="l"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="back3" vAlign="top" width="100%"><font class="text">Kai iÅ¡kvieÄiate glLoadIdentity() jÅ«s grįžtate atgal į ekrano centrÄ
,
kur X aÅ¡is tÄsiasi iÅ¡ kairÄs į deÅ¡inÄ, Y aÅ¡is - iÅ¡ virÅ¡aus į apaÄiÄ
, o Z ašis - link ekrano ir nuo jo.
<br>
<br>
OpenGL ekrano centras yra 0.0f X ir Y aÅ¡yse. Ä® kairÄ nuo centro yra neigiami skaiÄiai. Ä® deÅ¡inÄ nuo centro - teigiami skaiÄiai.
Kylant į ekrano viršų bus teigiami skaiÄiai, o leidžiantis žemyn - neigiami. Tolstant nuo žiÅ«rovo bus neigiami skaiÄiai,
artÄjant prie jo - teigiami skaiÄiai.
<br>
<br>
glTranslatef(x, y, z) juda pagal X, Y and Z ašis, atitinkama tvarka.
Žemiau esanti kodo eilutÄ pasislenka į kairÄ X aÅ¡imi per 1.5 vieneto. Ji visiÅ¡kai nejuda Y aÅ¡imi (0.0),
ir pasislenka į ekrano pusÄ per 6.0 vienetus.
Kitaip tariant, jÅ«s nÄ trupuÄio nepajudate nuo ekrano centro - jÅ«s pajudate iÅ¡ ekrano vietos, kurioje kÄ
tik buvote.
</font></td>
<td class="r"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table5">
<tr>
<td class="bl"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="bc" width="100%">
<img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="br"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<pre> glTranslatef(-1.5f,0.0f,-6.0f);
<font class="theme">// Pasislinkimas kairÄn 1.5 vieneto ir į ekranÄ
per 6.0 vienetus
</font>
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table6">
<tr>
<td class="tl"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="tc" width="100%">
<img alt="" src="vaizdai/blank.gif" width="100%" height="28"></td>
<td class="tr"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table7">
<tr>
<td class="l"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="back3" vAlign="top" width="100%"><font class="text">Dabar, kai jau pajudÄjome į kairiÄ
jÄ
ekrano pusÄ ir nustatÄme
pakankamÄ
vaizdo gilumÄ
ekrano atžvilgiu (-6.0), jog galÄtume matyti visÄ
vaizdÄ
, sukursime trikampį. glBegin(GL_TRIANGLES)
reiÅ¡kia, kad norime pradÄti pieÅ¡ti trikampį, o glEnd() informuoja OpenGL, kad trikampį kurti baigÄme. Ä®prastai, jei norite pieÅ¡ti
trikampį, naudokite GL_TRIANGLES. Daugelyje vaizdo plokÅ¡Äių trikampių pieÅ¡imas yra gana greitas. NorÄdami keturkampÄs figÅ«ros, naudokite
GL_QUADS ir jÅ«sų gyvenimas taps lengvesnis. Kiek esu girdÄjÄs, dauguma vaizdo plokÅ¡Äių bet kuriuo atveju objektus vaizduoja kaip
trikampius. Galų gale, jei norite figūros su daugiau nei 4 kampais, naudokite GL_POLYGON.
<br>
<br>
MÅ«sų paprastoje programoje pieÅ¡iame tik vienÄ
trikampį. Jei norÄtume nupieÅ¡ti antrÄ
trikampį, galÄtume įterpti kitas 3 kodo eilutes
(3 taÅ¡kus) iÅ¡syk po pirmųjų trijų. Visos Å¡eÅ¡ios kodo eilutÄs bÅ«tų tarp glBegin(GL_TRIANGLES) ir glEnd(). NÄra jokio tikslo įterpinÄti
glBegin(GL_TRIANGLES) ir glEnd() tarp kiekvienos 3 taÅ¡kų grupÄs. Tai taip pat galioja ir keturkampiams. Jei žinote, kad pieÅ¡ite tik
keturkampius, galite įterpti antrÄ
keturių kodo eiluÄių grupÄ iÅ¡syk po pirmųjų keturių eiluÄių. Kita vertus, daugiakampis (GL_POLYGON)
gali bÅ«ti sudarytas iÅ¡ bet kokio kiekio taÅ¡kų, taigi nÄra skirtumo, kiek eiluÄių turÄsite tarp glBegin(GL_POLYGON) and glEnd().
<br>
<br>
Pirmoji eilutÄ po glBegin nustato pirmÄ
jį mÅ«sų daugiakampio taÅ¡kÄ
. Pirmasis glVertex skaiÄius yra skirtas X aÅ¡iai, antrasis skirtas Y
aÅ¡iai, o treÄiasis skaiÄius - Z aÅ¡iai. Taigi pirmojoje eilutÄje nejudame X aÅ¡imi. Pajudame Y aÅ¡imi per 1 vienetÄ
, ir nejudame Z ašimi.
Tai duoda mums virÅ¡utinį trikampio taÅ¡kÄ
. Antrasis glVertex juda į kairÄ X aÅ¡imi per 1 vienetÄ
ir Y aÅ¡imi žemyn, taip pat per 1 vienetÄ
.
Tai duoda mums apatinį kairįjį trikampio taÅ¡kÄ
. TreÄiasis glVertex juda deÅ¡inÄn bei žemyn per 1 vienetÄ
. Tai duoda mums apatinį dešinįjį
trikampio taÅ¡kÄ
. glEnd() informuoja OpenGL, kad daugiau taÅ¡kų nebÄra. Užpildytas trikampis parodytas.
</font></td>
<td class="r"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table8">
<tr>
<td class="bl"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="bc" width="100%">
<img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="br"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<pre> glBegin(GL_TRIANGLES);
<font class="theme">// Piešimas naudojant trikampius
</font>
glVertex3f( 0.0f, 1.0f, 0.0f);
<font class="theme">// Viršutinis taškas
</font>
glVertex3f(-1.0f,-1.0f, 0.0f);
<font class="theme">// Kairysis apatinis taškas
</font>
glVertex3f( 1.0f,-1.0f, 0.0f);
<font class="theme">// Dešinysis apatinis taškas
</font>
glEnd();
<font class="theme">// Trikampis baigiamas piešti
</font>
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table9">
<tr>
<td class="tl"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="tc" width="100%">
<img alt="" src="vaizdai/blank.gif" width="100%" height="28"></td>
<td class="tr"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table10">
<tr>
<td class="l"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="back3" vAlign="top" width="100%"><font class="text">Dabar, kai jau pavaizdavome trikampį kairÄje ekrano pusÄje, turime persikelti
į deÅ¡inÄ ekrano pusÄ ir pavaizduoti keturkampį. Kad tai padarytume, vÄl naudojame glTranslate. Šį kartÄ
turime pajudÄti į deÅ¡inÄ,
todÄl X privalo bÅ«ti teigiama reikÅ¡mÄ. Kad pasislinktume į cnetrÄ
, turime pajudÄti deÅ¡inÄn per 1.5 vieneto, nes prieÅ¡ tai buvome pajudÄjÄ
į kairÄ per 1.5 vieneto. PasiekÄ centrÄ
, turime dar pajudÄti į deÅ¡inÄ nuo centro per 1.5 vieneto. Taigi iÅ¡ viso turime pajudÄti į deÅ¡inÄ
per 3 vienetus.
</font></td>
<td class="r"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table11">
<tr>
<td class="bl"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="bc" width="100%">
<img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="br"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<pre> glTranslatef(3.0f,0.0f,0.0f);
<font class="theme">// Pasislenka deÅ¡inÄn 3 vienetais
</font>
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table12">
<tr>
<td class="tl"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="tc" width="100%">
<img alt="" src="vaizdai/blank.gif" width="100%" height="28"></td>
<td class="tr"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table13">
<tr>
<td class="l"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="back3" vAlign="top" width="100%"><font class="text">Dabar kursime kvadratÄ
. Tai padarysime pasinaudojÄ GL_QUADS.
Keturkampis iÅ¡ esmÄs yra keturių briaunų daugiakampis. Puikiai tinka pieÅ¡ti kvadratui. Kodas, reikalingas sukurti kvadratÄ
,
yra labai panaÅ¡us į kodÄ
, kurį naudojome kurdami trikampį. Vienintelis skirtumas yra tai, kad naudojama GL_QUADS vietoje GL_TRIANGLES, o
taip pat reikia papildomo glVertex3f ketvirtajam kvadrato kampui. KvadratÄ
piešime iš viršutinio kairiojo kampo pagal laikrodžio
rodyklÄ. PieÅ¡iant pagal laikrodžio rodyklÄ, kvadratas bus pavaizduotas iÅ¡ užpakalio. Tai reiÅ¡kia, kad mes kvadratÄ
matome iš
užpakalinÄs pusÄs. Objektai, pieÅ¡ti prieÅ¡ laikrodžio rodyklÄ, bus atsisukÄ Ä¯ mus. Kol kas Å¡i savybÄ nÄra svarbi, bet vÄliau ji jums
bus reikalinga žinoti.
</font></td>
<td class="r"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table14">
<tr>
<td class="bl"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="bc" width="100%">
<img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="br"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<pre> glBegin(GL_QUADS);
<font class="theme">// PieÅ¡iame kvadratÄ
</font>
glVertex3f(-1.0f, 1.0f, 0.0f);
<font class="theme">// Viršutinis kairysis kampas
</font>
glVertex3f( 1.0f, 1.0f, 0.0f);
<font class="theme">// Viršutinis dešinysis kampas
</font>
glVertex3f( 1.0f,-1.0f, 0.0f);
<font class="theme">// Apatinis dešinysis kampas
</font>
glVertex3f(-1.0f,-1.0f, 0.0f);
<font class="theme">// Apatinis kairysis kampas
</font>
glEnd();
<font class="theme">// Baigiame kvadrato pieÅ¡imÄ
</font>
return TRUE;
<font class="theme"></font>
}
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table15">
<tr>
<td class="tl"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="tc" width="100%">
<img alt="" src="vaizdai/blank.gif" width="100%" height="28"></td>
<td class="tr"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table16">
<tr>
<td class="l"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="back3" vAlign="top" width="100%"><font class="text">Pabaigai pakeiskite kodÄ
perjungimui tarp lango / pilno ekrano
vaizdo, kad pavadinimas lango viršuje būtų teisingas.
<br>
<br>
Taip pat įsitikinkite, kad pakeitÄte pavadinimÄ
Å¡ioje eilutÄje
<font class="theme"><b>//
Create Our OpenGL Window
</b> (išsyk virš šio kodo). Priešingu atveju
</font> 'pilno ekrano' langas turÄs kitokį pavadinimÄ
nei
'paprastas langas'.
</font></td>
<td class="r"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table17">
<tr>
<td class="bl"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="bc" width="100%">
<img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="br"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<pre> if (keys[VK_F1])
<font class="theme">// Ar klavišas F1 nuspaustas?
</font>
{
keys[VK_F1]=FALSE;
<font class="theme">// Jei taip, raktas bus FALSE
</font>
KillGLWindow();
<font class="theme">// Uždarome mÅ«sų dabartinį langÄ
</font>
fullscreen=!fullscreen;
<font class="theme">// Perjungimas tarp pilno ekrano / papr. lango vaizdo
</font>
<font class="theme">// IÅ¡ naujo kuriame OpenGL langÄ
( PakeistÄ
)
</font>
if (!CreateGLWindow(
"Primoji daugiakampių pamoka
",640,480,16,fullscreen))
{
return 0;
<font class="theme">// Išeiname iš programos, jei langas nesukurtas
</font>
}
}
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table18">
<tr>
<td class="tl"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="tc" width="100%">
<img alt="" src="vaizdai/blank.gif" width="100%" height="28"></td>
<td class="tr"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
</tr>
</table>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table19">
<tr>
<td class="l"><img alt="" src="vaizdai/blank.gif" width="28" height="28"></td>
<td class="back3" vAlign="top" width="100%"><font class="text">Markus
Knauer priduria: Knygoje (
"OpenGL Programming Guide: The Official Guide
to Learning OpenGL, Release 1
", J. Neider, T. Davis, M. Woo,
Addison-Wesley, 1993) sekanÄiame paragrafe paaiÅ¡kinta, kÄ
reiškia NeHe, kai minimas pasislinkimas per vienetus OpenGL aplinkoje:
<br>
<br>
"[PaminÄjau] colius ir milimetrus - ar jie iÅ¡vis susijÄ su OpenGL? Atsakymas, trumpai tariant - ne. Projekcija ir kitos
transformacijos neturi matavimo vienetų. Jei norite galvoti apie artimas ir tolimas plokÅ¡tumas, esanÄias už 1.0 ir 20.0 metrų, colių,
kilometrų, ar lygų - tai jÅ«sų reikalas. VienintelÄ taisyklÄ - turite naudoti pastovų matavimo vienetÄ
.
" <br>
<br>
Å ioje pamokoje aÅ¡ bandžiau iÅ¡aiÅ¡kinti kiek galima daugiau dalykų, kiekvienÄ
žingsnį piešiant daugiakampius ir kvadratus su OpenGL. Jei
turite pastabų ar klausimų, rašykite e.paštu. Jei manote, kad kuris nors mano komentaras netinkamas ar kad kodas kai kuriose vietose
galÄtų bÅ«ti geresnis, praneÅ¡kite man. Noriu parengti geriausias OpenGL pamokas, kokias tik galiu. Man bÅ«tų įdomu iÅ¡girsti jÅ«sų
atsiliepimus.
<br>
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/vc/lesson02.zip">Visual
C++
</a> KodÄ
šiai pamokai.
<br>
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/asm/lesson02.zip">ASM
</a>
KodÄ
Å¡iai pamokai. ( PritaikÄ Foolman )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/bcb6/lesson02_bcb6.zip">
Borland C++ Builder 6
</a> PritaikÄ. ( Conversion by
Christian Kindahl )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/beos/lesson02.zip">BeOS
</a>
KodÄ
Å¡iai pamokai. ( PritaikÄ Rene Manqueros )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/c_sharp/lesson02.zip">C#
</a>
KodÄ
Å¡iai pamokai. ( PritaikÄ Joachim Rohde )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/csgl/lesson02.zip">VB.Net
CsGL
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ X )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/cwarrior/lesson02.zip">
Code Warrior 5.3
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Scott Lupton
)
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/cygwin/lesson02.tar.gz">
Cygwin
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Stephan Ferraro )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/d/lesson02.zip">
D Language
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Familia Pineda
Garcia )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/delphi/lesson02.zip">
Delphi
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Michal Tucek )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/devc/lesson02.zip">Dev C++
</a>
KodÄ
Å¡iai pamokai. ( PritaikÄ Dan )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/gameglut/lesson02.zip">
Game GLUT
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Milikas Anastasios )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/glut/lesson02.zip">GLUT
</a>
KodÄ
Å¡iai pamokai. ( PritaikÄ Andy Restad )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/irix/lesson02.zip">Irix
</a>
KodÄ
Å¡iai pamokai. ( PritaikÄ Lakmal Gunasekara )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/java/lesson02.zip">Java
</a>
KodÄ
Å¡iai pamokai. ( PritaikÄ Jeff Kirby )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/java_swt/lesson02.zip">
Java/SWT
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Victor Gonzalez )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/jedisdl/lesson02.zip">
Jedi-SDL
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Dominique Louis )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/jogl/lesson02.jar">JoGL
</a>
KodÄ
Å¡iai pamokai. ( PritaikÄ Kevin J. Duling )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/lccwin32/lccwin32_lesson02.zip">
LCC Win32
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Robert Wishlaw )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/linux/lesson02.tar.gz">
Linux
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Richard Campbell )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/linuxglx/lesson02.tar.gz">
Linux/GLX
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Mihael Vrbanec )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/linuxsdl/lesson02.tar.gz">
Linux/SDL
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Ti Leggett )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/lwjgl/lesson02.jar">LWJGL
</a>
KodÄ
Å¡iai pamokai. ( PritaikÄ Mark Bernard )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/mac/lesson02.sit">Mac OS
</a>
KodÄ
Å¡iai pamokai. ( PritaikÄ Anthony Parker )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/macosxcocoa/lesson02.zip">
Mac OS X/Cocoa
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Bryan Blackburn
)
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/masm/lesson02.zip">MASM
</a>
KodÄ
Å¡iai pamokai. ( PritaikÄ Nico (Scalp) )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/pbasic/lesson02.zip">Power
Basic
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Angus Law )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/pelles_c/lesson02.zip">
Pelles C
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Pelle Orinius )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/perl/lesson02.zip">Perl
</a>
KodÄ
Å¡iai pamokai. ( PritaikÄ Cora Hussey )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/python/lesson02.tar.gz">
Python
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Travis Wells )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/qt_cpp/lesson02.tar.gz">
QT/C++
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Popeanga Marian )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/realbasic/RBlesson02.zip">
REALbasic
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Thomas J. Cunningham
)
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/ruby/lesson02.zip">Ruby
</a>
KodÄ
Å¡iai pamokai. ( PritaikÄ Ben Goodspeed )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/scheme/lesson02.zip">
Scheme
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Jon DuBois )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/solaris/lesson02.zip">
Solaris
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Lakmal Gunasekara )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/vb/lesson02.zip">Visual
Basic
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Ross Dawson )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/vfortran/lesson02.zip">
Visual Fortran
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Jean-Philippe
Perois )
<br>
* PARSISIŲSKITE
<a href="http://nehe.gamedev.net/data/lessons/vs_net/lesson02.zip">
Visual Studio .NET
</a> KodÄ
Å¡iai pamokai. ( PritaikÄ Grant James
)
<br>
</font></td>
</tr>
</table>
</body>
</html>