16 Nisan 2014 Çarşamba

Öznitelikler(glPushAttrib, glPopAttrib)

Öznitelikler(glPushAttrib, glPopAttrib)


#include<GL/glut.h>

void pencere(void)

{



glClearColor(1.0,1.0,1.0,1.0);

glClear(GL_COLOR_BUFFER_BIT);

glLineWidth(1);//çizgi kalınlıgı

glPushAttrib (GL_LINE_BIT);

/*glPushAttrib fonsiyonundaki parametrede yıgımlarda

saklanacak tipi belirlemektedir şuan LINE glLineWidth parametresinde

belilenen degerden başba bir deger almamıştır,alınan degerler yıgında saklanacaktır

*/

glLineWidth (5);// glLineWidth degeri degiştiriliyor

glLineStipple (3, 0xff);// çizgi kesik kesik hale getiriliyor

glEnable(GL_LINE_STIPPLE);//glLineStipple aktif

glBegin (GL_LINES);//çizgi çiziliyor

glColor3f(1.0,0.0,0.0);// iki çizim arasındaki fark anlaşılsın diye ilk renk kırmızı

glVertex2f (0.4,0.4);

glVertex2f (-0.4,0.4);

glVertex2f (-0.6,-0.1);

glVertex2f (-0.2,-0.4);

glEnd ();

glPopAttrib ();

/*glPushAttrib teki degerler geri cagrılıyor ,glPopAttrib ten

sonraki kodlara yukarıdaki degerler artık etki etmeyecektir çünki,

glPushAttrib ve glPopAttrib arasında belirlenen tipe göre bilgiler

yıgınlarda saklanır ve glPopAttrib ten sonra serbest bırakılır*/

glColor3f(0.0,0.0,1.0);//ikinci çizim belirginligi için mavi renk tanımlanıyor

// glPushAttrib e kadar belirlenen özellikler etkindir.

glBegin (GL_LINES);

glVertex2f (0.3,0.3);

glVertex2f (-0.3,0.3);

glVertex2f (-0.5,-0.2);

glVertex2f (-0.1,-0.3);

glEnd ();

glFlush();

}





int main(int argcp,char **argcv)

{

glutInit(&argcp,argcv);

glutInitDisplayMode(GLUT_SINGLE);

glutInitWindowPosition(100, 200);

glutInitWindowSize(300,200);

glutCreateWindow("OpenGLTurk");

glutDisplayFunc(pencere);

glutMainLoop();

return 0;

}









Poligon detayları(glPolygonStipple)

Poligon detayları(glPolygonStipple)


#include<GL/glut.h>
void kare(void)
{
glColor3f(0.0,0.0,1.0);
glBegin(GL_POLYGON);
glVertex2f(0.4,0.4);
glVertex2f(-0.4,0.4);
glVertex2f(-0.4,-0.4);
glVertex2f(0.4,-0.4);
glEnd();
}
void pencere(void)
{
GLubyte fly[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60,
0x04, 0x60, 0x06, 0x20, 0x04, 0x30, 0x0C, 0x20,
0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20,
0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22,
0x66, 0x01, 0x80, 0x66, 0x33, 0x01, 0x80, 0xCC,
0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30,
0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc, 0xc0,
0x03, 0x31, 0x8c, 0xc0, 0x03, 0x33, 0xcc, 0xc0,
0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30,
0x18, 0xcc, 0x33, 0x18, 0x10, 0xc4, 0x23, 0x08,
0x10, 0x63, 0xC6, 0x08, 0x10, 0x30, 0x0c, 0x08,
0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08};
//çizimde kullanılacak fly dizisi tanımlanıyor

GLubyte halftone[] = {
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,

0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55,
0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55};
//çizimde kullanılacak halftone dizisi tanımlanıyor
glClearColor(1.0,1.0,1.0,1.0);
glClear(GL_COLOR_BUFFER_BIT);

glEnable(GL_POLYGON_STIPPLE);
//glPolygonStipple kullanımı aktif duruma getiriliyor
glPolygonStipple(fly);
/*glPolygonStipple fonksiyonu çizimi fly dizisi ile yapmaktadır
dizi hex sayısistemi içerir*/
glViewport(0,0,180,180);//sol 
kare();
//glPolygonStipple çizimi yapılacak yuzey kare yuzeyi
glPolygonStipple(halftone);
/*glPolygonStipple fonksiyonu çizimi halftone dizisi ile yapmaktadır
dizi hex sayısistemi içerir*/
glViewport(100,0,180,180);// sag 
kare();
//glPolygonStipple çizimi yapılacak yuzey kare yuzeyi
glDisable(GL_POLYGON_STIPPLE);//glPolygonStipple pasifleştiriyor
glFlush();
}


int main(int argcp,char **argcv)
{
glutInit(&argcp,argcv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowPosition(100, 200);
glutInitWindowSize(260,200);
glutCreateWindow("OpenGLTurk");
glutDisplayFunc(pencere);
glutMainLoop();
return 0;
}



Yüzeylerin Secimi(glCullFace)

Yüzeylerin Secimi(glCullFace)

#include<gl/glut.h>
void kare(void)
{
glColor3f(0.0,0.0,1.0);
glBegin(GL_POLYGON);
glVertex2f(0.4,0.4);
glVertex2f(-0.4,0.4);
glVertex2f(-0.4,-0.4);
glVertex2f(0.4,-0.4);       
glEnd();
}

void pencere(void)
{
glClearColor(1.0,1.0,1.0,1.0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,1.0);
/*
GL_CW   :saat yönünde çizim

GLCCW  :saatin tersi yönünde çizim
*/
glCullFace(GL_BACK);//ters(arka yuz) çizimler pasifleştiriliyor
glEnable(GL_CULL_FACE);
glPolygonMode(GL_FRONT, GL_LINE);
glFrontFace(GL_CW);//GL_LINE saat yönude arka yuzde görünecektir
glViewport(0,0,180,180);//sol alt 
kare();

//çizim glFrontFace(GL_CCW) ön yuzun çizim gercekleştigi için çizimn görünmektedir.
glPolygonMode(GL_FRONT, GL_LINE);
glFrontFace(GL_CCW);//GL_LINE saatin tersi yönünde ön yuzde görünecektir
glViewport(100,0,180,180);// sag alt
kare();


glFlush();
}
int main(int argcp,char **argcv)
{
glutInit(&argcp,argcv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowPosition(100, 200);
glutInitWindowSize(260,200);
glutCreateWindow("OpenGLTurk");
glutDisplayFunc(pencere);
glutMainLoop();
return 0;
}

Yüzeylerin Secimi(glFrontFace)

Yüzeylerin Secimi(glFrontFace)


#include<gl/glut.h>
void kare(void)
{
glColor3f(0.0,0.0,1.0);
glBegin(GL_POLYGON);
glVertex2f(0.4,0.4);
glVertex2f(-0.4,0.4);
glVertex2f(-0.4,-0.4);
glVertex2f(0.4,-0.4);       
glEnd();
}

void pencere(void)
{
glClearColor(1.0,1.0,1.0,1.0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,1.0);
/*
GL_CW   :saat yönünde çizim

GLCCW  :saatin tersi yönünde çizim
*/
glPolygonMode(GL_FRONT, GL_LINE);
glFrontFace(GL_CW);//GL_LINE arka yuzde görünecektir
glViewport(0,0,180,180);//sol alt 
kare();

glPolygonMode(GL_FRONT, GL_LINE);
glFrontFace(GL_CCW);//GL_LINE ön yuzde görünecektir
glViewport(100,0,180,180);// sag alt
kare();


glFlush();
}
int main(int argcp,char **argcv)
{
glutInit(&argcp,argcv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowPosition(100, 200);
glutInitWindowSize(260,200);
glutCreateWindow("OpenGLTurk");
glutDisplayFunc(pencere);
glutMainLoop();
return 0;
}

Polygon detayları(glPolygonMode)

Polygon detayları(glPolygonMode)


#include<gl/glut.h>
void kare(void)
{
glColor3f(0.0,0.0,1.0);
glBegin(GL_POLYGON);
glVertex2f(0.4,0.4);
glVertex2f(-0.4,0.4);
glVertex2f(-0.4,-0.4);
glVertex2f(0.4,-0.4);       
glEnd();
}

void pencere(void)
{
glClearColor(1.0,1.0,1.0,1.0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,1.0);
glPointSize(3.0);
glPolygonMode(GL_FRONT, GL_LINE);
/*çizimde etkilenecek yuzey ve çizim şekli belirleniyor
fonksiyonda GL_FRONT ön yuz seçilmiş GL_LINE çizim şekli seçilmiş*/
glViewport(0,0,130,100);//sol alt 
kare();

glPolygonMode(GL_FRONT, GL_FILL);
/*çizimde etkilenecek yuzey ve çizim şekli belirleniyor
fonksiyonda GL_FRONT ön yuz seçilmiş GL_FILL çizim şekli seçilmiş
GL_FILL çizim şekli polygonun  içi dolu çizilmesini saglar
*/
glViewport(130,0,130,100);// sag alt
kare();

glPolygonMode(GL_FRONT_AND_BACK , GL_FILL);
/*çizimde etkilenecek yuzey ve çizim şekli belirleniyor
fonksiyonda GL_FRONT_AND_BACK hem ön hem arka yuz seçilmiştir
GL_FILL çizim şekli seçilmiş*/
glViewport(0,100,130,100);//üst sol
kare();

glPolygonMode(GL_FRONT, GL_POINT);
/*çizimde etkilenecek yuzey ve çizim şekli belirleniyor
fonksiyonda GL_FRONT ön yuz seçilmiş GL_POINT çizim şekli seçilmiş
GL_POINT çizim şekli vertex köşe noktalrını belirtir.*/
glViewport(130,100,130,100);//üst sag
kare();
/*çizimler de GL_FRONT ön yuz,GL_FRONT_AND_BACK ön ve arka yuz 
oldugu gibi sadece GL_BACK arka yuzde kullanıla bilir*/
glFlush();
}
int main(int argcp,char **argcv)
{
glutInit(&argcp,argcv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowPosition(100, 200);
glutInitWindowSize(260,200);
glutCreateWindow("OpenGLTurk");
glutDisplayFunc(pencere);
glutMainLoop();
return 0;
}

Çizgi detayları(glLineStipple)

Çizgi detayları(glLineStipple)


#include<gl/glut.h>

void pencere(void)
{
glClearColor(1.0,1.0,1.0,1.0);
glClear(GL_COLOR_BUFFER_BIT);
glColor3f(0.0,0.0,1.0);
/*glEnable fonksiyonu ile LineStipple fonksiyonunun 
kullanımı aktif duruma getiriliyor*/
glEnable(GL_LINE_STIPPLE);
glLineStipple(2, 0x00FF);
/*LineStipple nin ilk parametresi (2) tam sayı tipinde 
deger almaktadır.(0x00FF)Parametresi  16 lık sayı sistemi 
düzeninde bir deger alır,parametrede sadece 1 bit degeri 
işlenir 0 bitler boş gecilmektedir ,fonksiyonun ilk parametresi 
ile genişletilerek çizim yapılmaktadır.
*/
glBegin(GL_LINES);
glVertex2f(0.8,0.0);
glVertex2f(-0.8,0.0);
glEnd();

glDisable(GL_LINE_STIPPLE);

glFlush();
}
int main(int argcp,char **argcv)
{
glutInit(&argcp,argcv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowPosition(100, 200);
glutInitWindowSize(225,180);
glutCreateWindow("OpenGLTurk");
glutDisplayFunc(pencere);
glutMainLoop();
return 0;
}

Poligon Modifikasyon(flags)

Poligon Modifikasyon(flags)



#include<GL/glut.h>

void pencere(void)
{
glClearColor(1.0,1.0,1.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
//çizim modu belirleniyor
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

glColor3f(0.0,0.0,1.0);
glBegin(GL_POLYGON);
glEdgeFlag(GL_TRUE);//çizimden etkilenecek vertexler ayarlanıyor
glVertex2f(0.4,0.4);
glEdgeFlag(GL_FALSE);//çizimden etkilenecek vertexler ayarlanıyor
glVertex2f(-0.4,0.4);
glEdgeFlag(GL_TRUE);//çizimden etkilenecek vertexler ayarlanıyor
glVertex2f(-0.4,-0.4);
glEdgeFlag(GL_FALSE);//çizimden etkilenecek vertexler ayarlanıyor
glVertex2f(0.4,-0.4);
glEnd();

glFlush();
}
int main(int argcp,char **argcv)
{
glutInit(&argcp,argcv);
glutInitDisplayMode(GLUT_SINGLE);
glutInitWindowPosition(0, 0);
glutInitWindowSize(225, 180); 
glutCreateWindow("OpenGLTurk");
glutDisplayFunc(pencere);
glutMainLoop();
return 0;
}