C++ / OpenGL [ 05 – Array ]

Vertex-Normal Arrays

Vertex array data boyut ve cesitleri ;

Command Sizes Values for type Argument
glVertexPointer 2, 3, 4 GL_SHORT, GL_INT, GL_FLOAT, GL_DOUBLE
glNormalPointer 3 GL_BYTE, GL_SHORT, GL_INT, GL_FLOAT, GL_DOUBLE
glColorPointer 3, 4 GL_BYTE, GL_UNSIGNED_BYTE, GL_SHORT, GL_UNSIGNED_SHORT, GL_INT, GL_UNSIGNED_INT, GL_FLOAT, GL_DOUBLE
glIndexPointer 1 GL_UNSIGNED_BYTE, GL_SHORT, GL_INT, GL_FLOAT, GL_DOUBLE
glTexCoordPointer 1, 2, 3, 4 GL_SHORT, GL_INT, GL_FLOAT, GL_DOUBLE
glEdgeFlagPointer 1 no type argument (type of data must be GLboolean)

Arrayleri detayli olarak sonraki derslerimizde gorecegiz simdilik basit olarak bir kup cizimi icin
Array olusturmayi gorecegiz ;

onceki dersimizde olusturdugumuz ana fonksiyonun uzerinden gidecegiz hepsini burda yazmiyacagimm sadece
eklenecek kodlar olacak;

oncelikle vertex ve color lari tutmasi icin degiskenlerimizi tanimliyoruz

[c language=”++”]
GLfloat vertices[][3] = { {-1.0,-1.0,-1.0},
{1.0,-1.0,-1.0}, {1.0,1.0,-1.0}, {-1.0,1.0,-1.0},
{-1.0,-1.0,1.0}, {1.0,-1.0,1.0}, {1.0,1.0,1.0},
{-1.0,1.0,1.0}};
GLfloat colors[][3] = {{0.0,0.0,0.0},{1.0,0.0,0.0},
{1.0,1.0,0.0}, {0.0,1.0,0.0}, {0.0,0.0,1.0},
{1.0,0.0,1.0}, {1.0,1.0,1.0}, {0.0,1.0,1.0}};
[/c]

tanimladiktan sonra kupumuzu olusturacak fonksiyonumuzu yaziyoruz.

[c language=”++”]
void kup(int color,int a, int b, int c , int d)
{
glColor3fv(colors[color]);
glBegin(GL_POLYGON);
glVertex3fv(vertices[a]);
glVertex3fv(vertices[b]);
glVertex3fv(vertices[c]);
glVertex3fv(vertices[d]);
glEnd();
}
[/c]

ve en son olarak ana goruntu fonksiyonumuzun icine
kupumuzun yuzlerini ekliyoruz.

kup(2,0,3,2,1); // kup fonskiyonuna gerekli rakamlarimizi gonderdik
// bu rakamlar Array lerde kacinci siradaki degere denk geliyorsa o konumdaki degerlerdir.
// *** kup(renk,ilknokta,ikincinokta,ucuncunokta,dorduncunokta);

[c language=”++”]
void RenderDisplay(void)
{
//Cizimden once Ekranimizi tamamen derinlik ve renk olarak temizler.
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glPushMatrix();
glTranslatef(0.0,0.0,-10.0);
glRotatef(60.0, 0.0, 1.0, 1.0);

//kupumuzun yuzleri
kup(2,0,3,2,1);
kup(1,2,3,7,6);
kup(3,0,4,7,3);
kup(4,1,2,6,5);
kup(5,4,5,6,7);
kup(6,0,1,5,4);

glPopMatrix();

//buffer lari cevirir cizimi ekrana doker
glutSwapBuffers();
}
[/c]

Ders sonunda olusturdugumuz projenin .cpp kaynak dosyasini buradan indirebilirsiniz.

ders05

Leave a Reply

Your email address will not be published. Required fields are marked *