<html>
<head>
<title>3 pamoka
</title>
<meta http-equiv=Content-Language content=lt>
<meta http-equiv=Content-Type content="text/html; charset=windows-1257">
<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" cellpadding="0" cellspacing="0" width="100%" id="table1">
<tr>
<td class="back3" valign="top" width="100%"><font class="text">
<p>Paskutinëje pamokoje að Jûs mokiau, kaip sukurti trikampius ir keturkampius ekrane. Ðiame pavyzdyje að Jûs iðmokysiu, kaip naudoti 2 skirtingus spalvinimo bûdus nuspalvinant trikampá ir keturkampá. Keturkampio spalvinimui bus naudojamas plokðèias daþymas. O trikampis bus spalvinamas tolygiai maiðant tris spalvas, nurodytuose taðkuose (virðûnëse), taip atsiras graþus spalvø derinys.
</p>
<p>Naudojant kodà ið paskutinës pamokos, mes atnaujinsim DrawGLScene procedûrà. Að perraðysiu visa procedûrà þemiau, tad, jei Jûs norite, galite atnaujinti paskutinës pamokos kodà, arba perraðyti ið naujo DrawGLScene procedûros kodà, kuris pateiktas þemiau.
</p> </font></td>
<td class="r">
<img src="vaizdai/blank.gif" alt="" width="28" height="28"></td>
</tr>
</table>
<pre>int DrawGLScene(GLvoid)
<font class="theme">// Èia daromas visas brëþinys
</font>
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
<font class="theme">// Iðvalome ekranà ir buferio gylá
</font>
glLoadIdentity();
<font class="theme">// graþina mus á ekrano centrà
</font>
glTranslatef(-1.5f,0.0f,-6.0f);
<font class="theme">// Ði funkcija perkelia mûsø buvimo vietà á musø pageidaujamà.
//Nustatome koordinates kur pieðime X = -1.5, Y=0.0, Z=-6.0
//(X aðis eina horizontaliai, Y - Vertikaliai, Z - Á tolá arba artyn)
</font>
glBegin(GL_TRIANGLES);
<font class="theme">// Nurodome kad pieðime trikampá
</font>
</pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="table4">
<tr>
<td class="back3" valign="top" width="100%"><font class="text">
Baltas trikampis nëra labai graþus, reiktø já nuspalvinti.
Kaip pamenate OpenGL naudoja RGBA standartà, kur 0.0 yra tamsiausia spalva, o 1.0 ðviesiausia.
<br>
Taðko spalvos nustatomos metodu
<strong>glColor3f (R, G, B)
</strong>, kurá mes dabar pirmà kartà ir panaudosime.
Trys parametrai R, G, B skliausteliuose yra raudonos (red), þalios (green) ir mëlynos (blue) spalvos intensyvumo
reikðmës, kurie yra realus skaièiai.
<br>
<br>
Mes pasirenkame raudona (didþiausia raudonos spalvos intensyvumà, nëra nei þalios, nei mëlynos).
Funkcija
<strong>glBegin(GL_TRIANGLE)
</strong>, nurodome kad pieðime trikampá, taigi funkcija ieðkos trijø taðkø koordinaèiø.
Taðkø koordinatës nustatomos
<strong>glVertex3f(x, y, z)
</strong> metodu. Taigi pirmasis mûsø taðkas bus pakilæs per 1 padalà
Y aðimi ir jis bus nuspalvintas pasrinkta spalva, kuri yra raudona. Viska kà mes pieðim nuo dabar bus raudonas tol,
kol mes nepakeisim spalvos á kità spalvà.
</font></td>
</tr>
</table>
<pre> glColor3f(1.0f,0.0f,0.0f);
<font class="theme">// Nustatome raudona spalva
</font>
glVertex3f( 0.0f, 1.0f, 0.0f);
<font class="theme">// Nustatomos spalvinimo taðkø koordinatës
</font>
</pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="table7">
<tr>
<td class="back3" valign="top" width="100%"><font class="text">
Mes idëjom pirmàjà virðûnës taðkà , kurios spalva raudona.
Bet dar liko dvi nepriskirtos trikampio virðûnës taðkai.
Tà dabar mes ir padarysime.
Nustatykime antràjà virðûnës taðkà, prieð tai priskirdami jai þalià spalvà.
Tokiu bûdu antroji virðûnë, kuri yra kairiajame trikampio kampe bus þalia.
</font></td>
</tr>
</table>
<pre> glColor3f(0.0f,1.0f,0.0f);
<font class="theme">// Nustatome þalia spalvà
</font>
glVertex3f(-1.0f,-1.0f, 0.0f);
<font class="theme">// Nustatomos spalvinimo taðkø koordinatës
</font>
</pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="table10">
<tr>
<td class="back3" valign="top" width="100%"><font class="text">
Treèioji ir paskutinë virðûnë. Prieð pradedant ja pieðti, mes pakeisime jos spalvà á mëlynà.
Ji bus deðiniajame trikampio kampe. Kai tik panaudosime
<strong>glEnd ()
</strong> komanda,
trikampis bus uþpildytas. Bet kadangi jis turi skirtingas spalvas kiekvienoje virðûnëje, o ne viena spalva,
spalvos pasklis ið kiekvieno kampo ir susitikis trikampio viduryje , kur spalvos susilies. Tai sklandus daþymas.
</font></td>
</tr>
</table>
<pre> glColor3f(0.0f,0.0f,1.0f);
<font class="theme">// Nustatome mëlyna spalvà
</font>
glVertex3f( 1.0f,-1.0f, 0.0f);
<font class="theme">// Nustatomos spalvinimo taðkø koordinatës
</font>
glEnd();
<font class="theme">// Baigiame pieðti trikampá
</font>
glTranslatef(3.0f,0.0f,0.0f);
<font class="theme">// Ði funkcija perkelia mûsø buvimo vietà á musø pageidaujamà.
</font>
</pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="table13">
<tr>
<td class="back3" valign="top" width="100%"><font class="text">Dabar mes
sudarysime melsvos spalvos kvadratà. Svarbu prisiminti, kad viskas kà
darysite po to, kai pasirinksit spalvà bus bûtent tos spalvos.
<br>
<br>
Taigi, norint kad mûsø kvadratas butu vienos spalvos, viskas, kà turime padaryti, tai nustatyti norimà spalvà (pavyzdþiui melsva)
vienà kartà ir tada pieðti kvadratà. Melsva spalva bus naudojama kiekvienoje virðûnëje,
nes mes nesakome OpenGL keisti kiekvienos virðûnës spalvos.
Galutinis rezultatas vientisas melsvos spalvos kvadratas.
Vëlgi, kvadratas (quad) yra pieðiamas pagal laikrodþio rodykle.
</font></td>
</tr>
</table>
<pre> glColor3f(0.5f,0.5f,1.0f);
<font class="theme">// Nustatome melsvà spalvà
</font>
glBegin(GL_QUADS);
<font class="theme">// Pradedam pieðti kvadratà
</font>
glVertex3f(-1.0f, 1.0f, 0.0f);
<font class="theme">// Nustatomos spalvinimo taðkø koordinatës (virðutinis kairysis)
</font>
glVertex3f( 1.0f, 1.0f, 0.0f);
<font class="theme">// Nustatomos spalvinimo taðkø koordinatës (virsutinis deðinysis)
</font>
glVertex3f( 1.0f,-1.0f, 0.0f);
<font class="theme">// Nustatomos spalvinimo taðkø koordinatës (apatinis deðinysis)
</font>
glVertex3f(-1.0f,-1.0f, 0.0f);
<font class="theme">// Nustatomos spalvinimo taðkø koordinatës (apatinis kairysis)
</font>
glEnd();
<font class="theme">// Baigiam pieðti kvadratà
</font>
return TRUE;
<font class="theme">// Graþiname rezultatà TRUE
</font>
}
</pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="table16">
<tr>
<td class="back3" valign="top" width="100%"><font class="text">
Dabar truputi kodà patobulinsime ir pridësime maþà funkcijà, kuri mums leis
perjunginëti lango reþimà ið fullscreen'o á áprasto lango dydá ir atvikðèiai,
ið áprasto lango dydþio á fullscreen'à
</font></td>
</tr>
</table>
<pre> if (keys[VK_F1])
<font class="theme">// Ar F1 yra paspaustas?
</font>
{
keys[VK_F1]=FALSE;
<font class="theme">// Jei taip raktas (Key) tampa FALSE
</font>
KillGLWindow();
<font class="theme">// Uþverti mûsø dabartiná langà
</font>
fullscreen=!fullscreen;
<font class="theme">// Pilnas Ekranas / Lango reþimas
</font>
// Perkuriam OpenGL langà
if (!CreateGLWindow(
"NeHe's Color Tutorial
",640,480,16,fullscreen))
{
return 0;
<font class="theme">// Iðeiti jei langas nebuvo sukurtas
</font>
}
}
</pre>
<table border="0" cellpadding="0" cellspacing="0" width="100%" id="table19">
<tr>
<td class="l">
<img src="vaizdai/blank.gif" alt="" width="28" height="28"></td>
<td class="back3" valign="top" width="100%"><font class="text">
Ðiame pavyzdyje bandyta pateikti ir paaiðkinti, kuo daugiau , kaip naudoti plokðtø ir tolydø daþymà OpenGL forma.
Paþaiskite su kodu, pabandykite pakeisti raudonos, þalios ir mëlynos spalvø vertes. Pamatysite kokias spalvas galima iðgauti.
<br>
<h2>Pavyzdþiai
</h2>
<ul>
<li><a href="kodai/bc6/lesson03.zip">Borland C++ Builder 6
</a></li>
<li><a href="kodai/devcpp/lesson03.zip">C#
</a></li>
<li><a href="kodai/vc6/lesson03.zip">VC6
</a></li>
<li><a href="kodai/perl/lesson03.zip">Perl
</a></li>
</ul>
</font></td>
</tr>
</table>
</body>
</html>