<html>
<head>
<title>6 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="l"> </td>
<td class="back3" vAlign="top" width="100%"><font class="text">Mokymai
kaip tekstura planas turi daug privalumu. Sakykime, jus norejote raketa
perskristi visa ekrana. Iki sios pamokos mes butume tikriausiai padare
visa raketa is poligonu ir isgalvotas spalvu. Su teksturos modeliavimu,
Galite imti tikra raketos paveiksliuka ir padaryti paveiksliuka skraidyti visame
ekrane. Kas, jusu manymu, atrodo geriau? Nuotrauka ar
objektas, sudarytas is trikampiu ir kvadratu? Naudodami teksturos modeliavima,
ne tik jusu programa atrodys geriau, bet ir jusu programos veiks greiciau. Tekstura
modeliuota raketa butu tik vienas kvadratas skersai ekrano.
Raketa pagamintas is poligonu gali buti sudaryta is simtu ar tukstanciu
poligonu. Viena teksturos modeliavimo susieta kvadratas naudoja daug maziau
apdorojimo galos.
<br>
<br>
Pradekim pridedami penkias naujas eilutes kodo i pirmos pamokos virsu.
Pirma nauja eilute # include
<stdio.h
>. Irasyta sio failo antrastes
leidzia mums dirbti su failais. Norint naudotis fopen () veliau koda
reikia itraukti sia eilute. Tada mes prideti tris naujus slankiojo kablelio
kintamuosius ... xrot, yrot ir zrot. Sie kintamieji bus naudojamas sukti
apie x asi kuba, y asies ir Z asis. Paskutine eilute GLuint texture [1]
nustato teksturos laikymo vieta. Jei norejote pakrauti daugiau nei
viena tekstura, jus turetomete pakeisti skaiciu nuo vieno iki
kokionors skaiciaus, teksturos norite ikelti.
</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>#include
<windows.h
> <font class="theme">// Antrastes failas langam naudoti
</font>
#include
<stdio.h
> <font class="theme">// Antrastes failas Standatinam Ivedimui/isvedimui
</font>
#include
<gl\gl.h
> <font class="theme">// Antrastes failas OpenGL32 bibliotekai
</font>
#include
<gl\glu.h
> <font class="theme">// Antrastes failas GLu32 bibliotekai
</font>
#include
<gl\glaux.h
> <font class="theme">// Antrastes failas GLaux bibliotekai
</font>
HDC hDC=NULL;
<font class="theme">// privati GDI prietaisu Context
</font>
HGLRC hRC=NULL;
<font class="theme">// Nuolatinis paleidimo aplinkybes
</font>
HWND hWnd=NULL;
<font class="theme">// Laiko langu rankenos
</font>
HINSTANCE hInstance;
<font class="theme">// Laiko aplikacojos akimirka
</font>
bool keys[256];
<font class="theme">// masyvas naodojamas klaveturos tvarka
</font>
bool active=TRUE;
<font class="theme">// Lango aktivavimo veliava
</font>
bool fullscreen=TRUE;
<font class="theme">// Pilno ekrano veliava
</font>
GLfloat xrot;
<font class="theme">// X kryptis
</font>
GLfloat yrot;
<font class="theme">// Y kryptis
</font>
GLfloat zrot;
<font class="theme">// Z kryptis
</font>
GLuint texture[1];
<font class="theme">// Texturos laikymo vieta
</font>
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
<font class="theme">// WndProc paskelbimas
</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">Dabar
is karto po virsuj esancio kodo, ir pries ReSizeGLScene (),
mes norime prideti sio skyriaus koda. Sio kodo darbas yra pakrauti bitmap faila.
Jei failas neegzistuoja, NULL grazinamas kaip reiksme, reiskia tekstura negali
buti ikelta. Pries pradedant aiskinti koda yra keletas labai svarbiu dalyku,
ka reikia zinoti apie vaizdus, kuriuos planuojate naudoti kaip tekstura.
Image'o aukstis ir plotis turi būti ne daugiau kaip 2 galios.
plotis ir aukstis turi buti ne maziau kaip 64 tasku, ir dÄl suderinamumo
priezasciu, turi buti ne didesnis nei 256 pikseliu. Jei atvaizdÄ
, kuri norite naudoti
ne 64, 128 arba 256 pikseliu plocio ir aukscio, tai reikia pakeisti jo dydi
kokia nors menu programa. Yra budu, kaip si apribojima apeiti, bet dabar mes tiesiog
laikysimes standartines strukturos dydziais.
<br>
<br>
Pirmas dalykas, kuri mes darome, yra sukurti failo rankenele. Rankenos yra verte
nustatanti isteklius, kad muss programa galetu naudotis. Mes nustateme rankena
NULL kad pradzioje isjungtume.
</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>AUX_RGBImageRec *LoadBMP(char *Filename)
<font class="theme">// Pakrauna modelio image'a
</font>
{
FILE *File=NULL;
<font class="theme">// Failo rankena
</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">Toliau
mes isitikinsime, kad failui vardas buvo suteiktas.
Asmuo gali naudoti LoadBMP () nenurodant ar failas buvo ikeltas, todel mes turime
patikrinti. Mes nenorime bandyti pakrauti nieka :)
</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> if (!Filename)
<font class="theme">// Isitikinama ar failui vardas buvo suteiktas
</font>
{
return NULL;
<font class="theme">// Jei ne grazinti NULL
</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">Jei
failo vardas buvo suteiktas, mes tikriname, ar failas egzistuoja.
Eilute zemiau bando atidaryti faila.
</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> File=fopen(Filename,
"r
");
<font class="theme">// Tikrina ar failas egzistuoja
</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">Jei
mes galejome atidaryti faila jis akivaizdziai egzistuoja. Mes uzdarome faila su
fclose (failas) tada mes griziname image'o duomenis. auxDIBImageLoad (filename)
skaito duomenis.
</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> if (File)
<font class="theme">// Ar failas egzistuoja?
</font>
{
fclose(File);
<font class="theme">// Uzdaro rankena
</font>
return auxDIBImageLoad(Filename);
<font class="theme">// Paleidzia Bitmap ir grazina pointeri
</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">Jei
mes negalejome atidaryti failo mes grazinsime NULL. t.y. byla
negali buti ikelta. Veliau i programa mes tikriname, ar
byla buvo pakrautas. Jei jis nebuvo mes baigsim programa su klaidos
pranesima.
</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> return NULL;
<font class="theme">// Jei nepasiseke pakraut grazina NULL
</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">Sioje
codo dalyje kuris paleidzia bitmap (iskviesdamas koda esanti virsui)
ir isvercia ji i tekstura.
</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="table20">
<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 LoadGLTextures()
<font class="theme">// Paleidzia Bitmap ir isvercia teksturas
</font>
{
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table21">
<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="table22">
<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">Mes
nustatysime kintamaji vadinama busena. Mes naudosime si kintamaji
tam kad sektume ar galime, ar ne, pakrauti bitmap ir statyti tekstura.
Mes nustatome busena i klaidinga (reiskia, kad niekas nebuvo pakrauta ar pastatyta),
numatytaje reiksme.
</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="table23">
<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 Status=FALSE;
<font class="theme">// Busenos rodiklis
</font>
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table24">
<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="table25">
<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 mes
sukursime image'o irasa kuriame mes galesime laikyti musu bitmap.
Irasas laikys bitmap'o ploti, auksti ir duomenis.
</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="table26">
<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> AUX_RGBImageRec *TextureImage[1];
<font class="theme">// Sukuriama laikymo vieta texturai
</font>
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table27">
<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="table28">
<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">Mes isvalome
image'o irasa tam, kad isistikinti ar jis tuscias.
</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="table29">
<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> memset(TextureImage,0,sizeof(void *)*1);
<font class="theme">// Nustato Pointeri i NULL
</font>
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table30">
<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="table31">
<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 mes
paleidziame bitmap'a ir isverciame ji i tekstura.
TextureImage[0]=LoadBMP(
"Data/NeHe.bmp
") nusoks i musu LoadBMP()
coda. Failas pavadintas NeHe.bmp duomenu katalogas bus pakrautas. Jei
viskas bus gerai, image'o duomenys bus talpinami TextureImage[0],
Busena yra nustatyta i TRUE ir mes pradesim kurti musu tekstura.
</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="table32">
<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> <font class="theme">// Pakraunamas Bitmap'as, Tikrinamos klaidos, jei Bitmap'as nerastas baigti
</font>
if (TextureImage[0]=LoadBMP(
"Data/NeHe.bmp
"))
{
Status=TRUE;
<font class="theme">// Nustato Busena i TRUE
</font>
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table33">
<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="table34">
<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 jau
paleide image'o duomenis i TextureImage[0], mes pastatysim tekstura naudodami
jo duomenis. Pirmoji eilute glGenTextures(1,
&texture[0])
pasako OpenGL, kad mes norime sugeneruoti viena teksturos varda (didina skaiciu
jei tu paleidai daugiau nei viena texstura). Atsiminkite, pacioj pradzioj
sio pamokos mes sukureme vieta vienai teksturai su eilute GLuint
texture[1]. Tuotarpu tu nemanai, kad pirma tekstura bus talpinama i
&texture[1] vietoj
&texture[0], tai taip nera. Pirmas tikras talpinimo
vieta yra 0. Jei mes norime dviju teksturu mes turetume naudoti GLuint texture[2] ir
antraje tekstura butu talpinama i texture[1].
<br>
<br>
Antroji eilute glBindTexture(GL_TEXTURE_2D, texture[0]) pasako OpenGL
suristi teksturos varda texture[0] su teksturos taikiniu. 2D tekstura turi
abu auksti (Y asyje) ir ploti (X asyje). Pagrindine funkcija glBindTexture yra
priskirti teksturos varda teksturos duomenims. Siuo atveju mes sakome OpenGL,
cia yra galima atmitis
&texture[0]. Kai mes sukuriame tekstura
ji bus talpinama nuorodos atmintyje
&texture[0].
</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="table35">
<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> glGenTextures(1,
&texture[0]);
<font class="theme">// Sukuriama tekstura
</font>
<font class="theme">// Tipinis teksturos generavimas naudojant duomenis is Bitmap
</font>
glBindTexture(GL_TEXTURE_2D, texture[0]);
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table36">
<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="table37">
<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">Toliau mes
sukuriame tikra tekstura. Sekancios eilutes pasako OpenGL, kad tekstura
bus 2D tekstura (GL_TEXTURE_2D). Nulis atvaizduoja images'o smulkmenu lygi,
tai dazniausiai nustatyta nuliui. Yra trys duomenu komponentai.
Kadangi image'as yra pagamintas is raudonu, zaliu ir melinu duomenu,
cia yra trys komponentai. TextureImage[0]-
>sizeX yra teksturos
plotis. Jei zinai ploti, gali ji ideti, bet lengviau leisti kompiuteriui paciam
isiaiskinti uz jus. TextureImage[0]-
>sizey yra teksturos aukstisis.
Nukis yra riba. Jis dazniausiai nustatyta nuliui. GL_RGB pasako OpenGL,
image'o duomenys, kuriuos naudojam, yra padaryti is raudonos, zalios ir melinos duomenu tvarka.
GL_UNSIGNED_BYTE reiskia, kad duomenys kurie sukuria image'a yra padaryti is
nepazimetu bitu (unsigned bytes) ir galutinai... TextureImage[0]-
>data pasako OpenGL
is kur mes turime gauti teksturos duomenis. Siuo atveju jis nurodo duomenis patalpintus
TextureImage[0] irase.
</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="table38">
<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> <font class="theme">// generuoja tekstura
</font>
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]-
>sizeX, TextureImage[0]-
>sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]-
>data);
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table39">
<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="table40">
<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">Kitos
dvi eilutes pasako OpenGL koki filtravimo tipa naudosime kai imge'as yra
didziulis (GL_TEXTURE_MAG_FILTER) arba istemptas ekrane nei orginalioje teksturoje,
arba kai jis mazesnis (GL_TEXTURE_MIN_FILTER) ekrane nei tikroji tekstura.
As paprastai naudoju GL_LINEAR abiem atvejams. Tai padaro tekstura atrodancia
lygiu is tolo ir kai jis paruostas uzdarome ekrana. Naudojant GL_LINEAR
reikalinga labai dagu procesoriaus/vaizdo kortos darbo,
tai jei jusu sitema leta, jus geriau norit naudoti GL_NEAREST.
Tekstura kuri yra filtruota su GL_NEAREST atrodys kubuotai kai istemsime.
Jus taip pat galite bandyti abi kombinacijas. Padarykite filtruotus dalykus arti,
bet ne dalykus kurie yra tolumoje.
</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="table41">
<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> glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
<font class="theme">// linijinis filtravimas
</font>
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
<font class="theme">// linijinis filtravimas
</font>
}
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table42">
<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="table43">
<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 mes
atlaisvinam betkokias kliutis kurias galim naudoti bitmap duomenims talpinti. Mes tikriname,
kad pamatytume ar bitmap duomenys buvo patalpintos TextureImage[0]. Jei ji buvo
mes tikriname, kad pamatytume ar duomenys buvo patalpinti. Jei duomenys buvo patalpinti, mes istriname
ji. Tada mes atlaisviname image'o struktura isitikindami
ar kokia atmintis yra laisva.
</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="table44">
<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 (TextureImage[0])
<font class="theme">// Ar tekstura egzistuoja
</font>
{
if (TextureImage[0]-
>data)
<font class="theme">// Ar teksturos image'as egzistuoja
</font>
{
free(TextureImage[0]-
>data);
<font class="theme">// Atlaisvina teksturos Image'o atminti
</font>
}
free(TextureImage[0]);
<font class="theme">// Atlaisvina Image'o stuktura
</font>
}
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table45">
<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="table46">
<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">Galutinai
mes graziname busena. Jei viskas buvo OK, busenos verte bus TRUE.
Jei kas nors buvo negeriai, busena bus FALSE.
</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="table47">
<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> return Status;
<font class="theme">// Grazina busena
</font>
}
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table48">
<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="table49">
<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">As
pridejau keleta eiluciu kodo InitGL. As atspausdinu visa kodo sekciaja,
tam, kad butu lengviau pamatyti eilute kuria pridejau ir kur ji eina kode.
Pirmoji eilute jei (!LoadGLTextures()) nusoksta eile virsuj su
bitmap paleidimu ir padaro tekstura is jos. Jei LoadGLTextures() nepavyksta
del kokios nors priezasties, kita kodo eilute bus grazinti FALSE.
Jei viskas buvo OK ir tekstura buvo sukurta, mes ijungiame 2D
teksturos modeliavima. Jei uzmirsote ijunkti teksturos modeliavima jusu objektas
parastai atsiras istisai baltas ir tao tikrai nera gerai.
</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="table50">
<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 InitGL(GLvoid)
<font class="theme">// Visi OpenGL nustatymai dedami cia
</font>
{
if (!LoadGLTextures())
<font class="theme">// Nusoka tekstuos paleidimo rutina
</font>
{
return FALSE;
<font class="theme">// Jei tekstura nepasileidzia grazina FALSE
</font>
}
glEnable(GL_TEXTURE_2D);
<font class="theme">// Leisti teksturos modeliavima
</font>
glShadeModel(GL_SMOOTH);
<font class="theme">// Leisti idtisa spalvinima
</font>
glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
<font class="theme">// Juodas fonas
</font>
glClearDepth(1.0f);
<font class="theme">// Gylio susvelninimo nustatymai
</font>
glEnable(GL_DEPTH_TEST);
<font class="theme">// Leidzia gylio testavima
</font>
glDepthFunc(GL_LEQUAL);
<font class="theme">// Gylio testavimo tipas
</font>
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
<font class="theme">// tikrai grazios perspektyvos skaciavimai
</font>
return TRUE;
<font class="theme">// Tikrinama ar viskas OK
</font>
}
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table51">
<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="table52">
<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 mes
nupiesime teksturos kuba. Tu gali pakeisti DrawGLScene koda su kodu apacioje
arba gali prideti nauja koda prie orginalios pirmos pamokos kodo.
Si sekcija bus labai komentuota todel bus langva suprasti.
Pirmos dvi kodo eilutes glClear() ir glLoadIdentity() yra
pirmos pamokos kodas. glClear(GL_COLOR_BUFFER_BIT |
GL_DEPTH_BUFFER_BIT) isvalys ekrana i spalva kuria mes pasirinksime InitGL().
Siuo atveju, ekranas bus isvalomas i juoda. Gylio buferis
irgi bus isvalytas. Vaizdas tada bus pakartotinai nustatytas su glLoadIdentity().
</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="table53">
<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">// Cia bus visi piesimai
</font>
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
<font class="theme">// Isvalo ekrana ir gylio buferi
</font>
glLoadIdentity();
<font class="theme">// Restratuoja dabartine matrica
</font>
glTranslatef(0.0f,0.0f,-5.0f);
<font class="theme">// Perkelia i 5 ekrana
</font>
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table54">
<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="table55">
<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">Sekancios
trys kodo eilutes pasuks kuba x asimi, tada y asimi ir galutinai z asimi.
Kiek pasuks kieviena asimi priklausys nuo verciu patalpintu xrot, yrot ir zrot.
</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="table56">
<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> glRotatef(xrot,1.0f,0.0f,0.0f);
<font class="theme">// Pasuka X asimi
</font>
glRotatef(yrot,0.0f,1.0f,0.0f);
<font class="theme">// Pasuka Y asimi
</font>
glRotatef(zrot,0.0f,0.0f,1.0f);
<font class="theme">// Pasuka Z asimi
</font>
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table57">
<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="table58">
<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">Sekanti
codo eilute pazymi kuria tekstura mes norime naudoti. Jei cia yra daugiau
nei viena tekstura jus norite naudoti scenoje, jus pazimesite tekstura
naudojant glBindTexture(GL_TEXTURE_2D, texture[naudojamu teksturu skaicius]).
Jei jus pakeisti tekstura, jus prijunksite neauja tekstura.
Vienas dalykas pabreziama, tai kad jus negalite prijunkti teksturos viduje
glBegin() ir glEnd(), jus turite tai padaryti pries glBegin().
Pastebekite kaip mes naudjame glBindTextures nurodo sukurta tekstura ir
pasirinkta specifine tekstura.
</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="table59">
<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> glBindTexture(GL_TEXTURE_2D, texture[0]);
<font class="theme">// Pasirenkame savo tekstura
</font>
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table60">
<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="table61">
<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">
Tam kad tinkamai nustatytume teksturos vieta, jus turite isitikinti, kad
virsutine desine tekstura yra sumodeliuota. Virsutine kairioji
tekstura yra sumodeliuota virsutinej kairioj vietoje, apatine desine
tekstura modeliuota aoatineje desineje dalyje ir galutinai,
apatine kaire teksturos yra sumodeliuota i apatine kaire vieta. Jei
teksturos kampai neatitinka tospacios vietos,
image'as gali atrodyti apverstas aukstyn kojom, sonu, ar visai nebuti.
<br>
<br>
Pirmoji verte glTexCoord2f yra X koordinate. 0.0f yra kaire teksturos dalis.
0.5f yra teksturos vidurys ir 1.0f yra desinis teksturos krastas.
Sekanti verte glTexCoord2f yra Y koordiante. 0.0f yra teksturos apacia.
0.5f yra teksturos vidurys ir 1.0f yra teksturos virsu.
<br>
<br>
Tai kaip mes zinome, kad virsutine kaire teksturos koordinate yra 0.0f ant X ir
1.0f ant Y, ir virsutine kaire vietos virsune yra -1.0f ant X, ir 1.0f ant Y.
Dabar kas beliko tai atitaikyti kitas tris teksturos koordinates
su likusiai trimis vietos kampais.
<br>
<br>
Bandykit zaisti su x ir y vertem glTexCoord2f. Keisdami
1.0f i 0.5f tik nupies kaire teksturos puse is 0.0f (kaire)
i 0.5f (teksturos vidurys). Keisdami 0.0f i 0.5f tik nupies
desini teksturos puse is 0.5f (vidurio) i 1.0f (desinia).
</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="table62">
<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">// Front Face
</font>
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
<font class="theme">// Apatine kaire Tekstura ir vieta
</font>
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
<font class="theme">// Apatine desine Tekstura ir vieta
</font>
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
<font class="theme">// Virsutine desine Tekstura ir vieta
</font>
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
<font class="theme">// Virsutine kaire Tekstura ir vieta
</font>
<font class="theme">// Back Face
</font>
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
<font class="theme">// Apatine desine Tekstura ir vieta
</font>
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
<font class="theme">// Virsutine desine Tekstura ir vieta
</font>
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
<font class="theme">// Virsutine kaire Tekstura ir vieta
</font>
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
<font class="theme">// Apatine kaire Tekstura ir vieta
</font>
<font class="theme">// Top Face
</font>
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
<font class="theme">// Virsutine kaire Tekstura ir vieta
</font>
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
<font class="theme">// Apatine kaire Tekstura ir vieta
</font>
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
<font class="theme">// Apatine desine Tekstura ir vieta
</font>
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
<font class="theme">// Virsutine desine Tekstura ir vieta
</font>
<font class="theme">// Bottom Face
</font>
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
<font class="theme">// Virsutine desine Tekstura ir vieta
</font>
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
<font class="theme">// Virsutine kaire Tekstura ir vieta
</font>
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
<font class="theme">// apatine kaire Tekstura ir vieta
</font>
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
<font class="theme">// Apatine desine Tekstura ir vieta
</font>
<font class="theme">// Right face
</font>
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
<font class="theme">// Apatine desine Tekstura ir vieta
</font>
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
<font class="theme">// Virsutine desine Tekstura ir vieta
</font>
glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
<font class="theme">// Virsutine kaire Tekstura ir vieta
</font>
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
<font class="theme">// Apatine kaire Tekstura ir vieta
</font>
<font class="theme">// Left Face
</font>
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
<font class="theme">// Apatine kaire Tekstura ir vieta
</font>
glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
<font class="theme">// Apatine desine Tekstura ir vieta
</font>
glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
<font class="theme">// Virsutine desine Tekstura ir vieta
</font>
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
<font class="theme">// Virsutine kaire Tekstura ir vieta
</font>
glEnd();
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table63">
<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="table64">
<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 mes
padidinsime xrot, yrot ir zrot vertes. Bandyk keisti rodiklius, didinant skaicius
priversdami kuba suktis greiciau ar leciau, ar bandykit
keisti a + i a - kad priversti kuba suktis i kita puse.
</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="table65">
<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> xrot+=0.3f;
<font class="theme">// X asies kryptis
</font>
yrot+=0.2f;
<font class="theme">// Y asies kryptis
</font>
zrot+=0.4f;
<font class="theme">// Z asies kryptis
</font>
return true;
<font class="theme">// Vis eina
</font>
}
</pre>
<table border="0" cellSpacing="0" cellPadding="0" width="100%" id="table66">
<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="table67">
<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">Jus
tuetumete tureti geresni supratima apie teksturos modeliavima. Jus turetumete
sugebeti teksturos modelio padaryti pavirsiu is betkokios vietos su turimu image'u
kuri pasirinksite. Kai tik jausites pasitikintis savo supratimu apie 2D teksturos
modeliavima, bandykit prideti sesis skirtingus teksturas kubui.
<br>
<br>
Teksturos modeliavimas nera sudetinga suprasti kai tik pradedi supraasti teksturos koordinates.
Jei jus turite problemu suprantant kuria nors sios pamokos dali,
praneskit man. Arba as perasysiu ta pamokos dali ar atrasysiu atgal i jusu elektrunini pasta.
Pasilinksminkit kurdami savo teksturos scenes :)
<br>
<br>
<b>Jeff Molofee
</b> (
<b>NeHe
</b>)
<br>
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/vc/lesson06.zip">Visual
C++
</a> Sios pamokos kodas.
<br>
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/bcb6/lesson06_bcb6.zip">
Borland C++ Builder 6
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:christian@tugzip.com">Christian Kindahl
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/c_sharp/lesson06.zip">C#
</a>
Sios pamokos kodas. ( Conversion by
<a href="mailto:sugarbee@gmx.net">
Sabine Felsinger
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/csgl/lesson06.zip">VB.Net
CsGL
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:createdbyx@yahoo.com">X
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/cwarrior/lesson06.zip">
Code Warrior 5.3
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:DelusionalBeing@hotmail.com">Scott Lupton
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/cygwin/lesson06.tar.gz">
Cygwin
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:stephan@lazyfellow.com">Stephan Ferraro
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/d/lesson06.zip">
D Language
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:gpineda2013@yahoo.com.mx">Familia Pineda Garcia
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/delphi/lesson06.zip">
Delphi
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:michal_praha@seznam.cz">Michal Tucek
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/devc/lesson06.zip">Dev C++
</a>
Sios pamokos kodas. ( Conversion by
<a href="mailto:danprogram@hotmail.com">Dan
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/euphoria/lesson06.zip">
Euphoria
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:1evan@sbcglobal.net">Evan Marshall
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/gameglut/lesson06.zip">
Game GLUT
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:milix_gr@hotmail.com">Milikas Anastasios
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/glut/lesson06.zip">GLUT
</a>
Sios pamokos kodas. ( Conversion by
<a href="mailto:kgancarz@hotmail.com">Kyle Gancarz
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/irix/lesson06.zip">Irix
</a>
Sios pamokos kodas. ( Conversion by
<a href="mailto:lakmal@gunasekara.de">Lakmal Gunasekara
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/java/lesson06.zip">Java
</a>
Sios pamokos kodas. ( Conversion by
<a href="mailto:jeff@consunet.com.au">Jeff Kirby
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/jedisdl/lesson06.zip">
Jedi-SDL
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:Dominique@SavageSoftware.com.au">Dominique Louis
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/jogl/lesson06.jar">JoGL
</a>
Sios pamokos kodas. ( Conversion by
<a href="mailto:jattier@hotmail.com">Kevin J. Duling
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/lccwin32/lccwin32_lesson06.zip">
LCC Win32
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:rwishlaw@shaw.ca">Robert Wishlaw
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/linux/lesson06.tar.gz">
Linux
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:ulmont@bellsouth.net">Richard Campbell
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/linuxglx/lesson06.tar.gz">
Linux/GLX
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:Mihael.Vrbanec@stud.uni-karlsruhe.de">Mihael Vrbanec
</a>
)
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/linuxsdl/lesson06.tar.gz">
Linux/SDL
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:leggett@eecs.tulane.edu">Ti Leggett
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/lwjgl/lesson06.jar">LWJGL
</a>
Sios pamokos kodas. ( Conversion by
<a href="mailto:mark.bernard@rogers.com">Mark Bernard
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/mac/lesson06.sit">Mac OS
</a>
Sios pamokos kodas. ( Conversion by
<a href="mailto:asp@usc.edu">
Anthony Parker
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/macosxcocoa/lesson06.zip">
Mac OS X/Cocoa
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:blb@pobox.com">Bryan Blackburn
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/masm/lesson06.zip">MASM
</a>
Sios pamokos kodas. ( Conversion by
<a href="mailto:scalp@bigfoot.com">
Nico (Scalp)
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/openil/lesson06.zip">
Visual C++ / OpenIL
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:doomwiz@ticnet.com">Denton Woods
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/pbasic/lesson06.zip">Power
Basic
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:anguslaw@net.ntl.com">Angus Law
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/pelles_c/lesson06.zip">
Pelles C
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:pelle@smorgasbordet.com">Pelle Orinius
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/python/lesson06.tar.gz">
Python
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:johngferguson@comcast.net">John Ferguson
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/realbasic/RBlesson06.zip">
REALbasic
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:mauitom@maui.net">Thomas J. Cunningham
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/scheme/lesson06.zip">
Scheme
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:bburns@cs.umass.edu">Brendan Burns
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/solaris/lesson06.zip">
Solaris
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:lakmal@gunasekara.de">Lakmal Gunasekara
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/vb/lesson06.zip">Visual
Basic
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:rosscogl@email.com">Ross Dawson
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/vb/lesson06-2.zip">Visual
Basic
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:pdetagyos@home.com">Peter De Tagyos
</a> )
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/vfortran/lesson06.zip">
Visual Fortran
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:Jean-Philippe.Perois@wanadoo.fr">Jean-Philippe Perois
</a>
)
<br>
* Parsisiuskit
<a href="http://nehe.gamedev.net/data/lessons/vs_net/lesson06.zip">
Visual Studio .NET
</a> Sios pamokos kodas. ( Conversion by
<a href="mailto:ultimatezeus@hotmail.com">Grant James
</a> )
</font></td>
</tr>
</table>
</body>
</html>