

Windows işletim sisteminde çizim yapılırken çizim alanı koordinatları ekranın sol üst köşesi başlangıç alınmaktadır. Bu noktanın koordinatları X=0 ve Y=0 'dır. Koordinatlar soldan sağa (X) ve yukarıdan aşağı (Y) doğru artmaktadır.

Delphi diğer windows uygulamalarından olduğu gibi grafik uygulamalarında da oldukça başarılıdır. Bütün windows programları (pencere, buton vb) grafik öğeleri barındırır. Fakat bu grafik öğeler her program için yeterli değildir. Oyunlar ve grafik programları vb programlar daha ileri grafik fonksiyonlarına ve kontrollerine ihtiyaç duyar. Delphi bu ihtiyaçlara cevap verecek bileşenlere ve diğer araçlara sahiptir.
Delphi grafikleri göstermek için TImage bileşenine sahiptir. Bu bileşene Additional sayfasından ulaşmak mümkündür. Bu bileşenle .bmp (Bitmap), wmf (16 bit Windows meta file), emf (32 bit Enhanced meta file), ico (Icon-simge dosyası), .jpg ve .jpeg (Jpeg Dosyası) tipindeki resim dosyalarını ekranda göstermek mümkündür. Bu dosyaları kullanmak için bileşenin Picture özelliği kulanılır. Bu özellik delphinin TPicture tipindedir.
Bu bileşeni kullanmak için Form penceresine bir adet TImage bileşeni yerleştirilir. Bu bileşenin ismi otomatik olarak Image1 dir. İsim değiştirme ve diğer ayarlar Object Inspector penceresinden yapılır. Bu bileşenin program başlangıcında bir resmi göstermesi istenirse bunun için Image1 seçili iken Picture özelliği seçilir ve yanındaki ... kısmına tıklanır. Ekrana Picture Editor diyalogu gelecektir. Bu diyalog içinde Load butonuna tıklandığında gelecek Dosya aç diyalogundan desteklenen resim tiplerinden istenilen seçilebilir. Seçilen resim ekranda görünür. Seçilen resmi temizlemek için Picture Editor diyalogunun Clear butonuna tıklanır.
Bu bileşene çalışma esnasında da resim yüklenebilir. Bileşenin Picture özelliğinin LoadFromFile prosedürü kullanılır. Bu prosedürün kullanımı şu şekildedir:
Image1.Picture.LoadFromFile('resim.bmp');
Üzerinde işlem yapılan resimleri kaydetmek te mümkündür. Bunun için SaveToFile prosedürü kullanılır. Bu prosedürün kullanımı ise şu şekildedir:
Image1.Picture.SaveToFile('resim.bmp');
Delphi renk için TColor özelliği kullanır. TColor'da temel renklerin, belirli renklerin ve sistem renklerinin isimleri vardır. Renkler "cl" (color) harfleri ile başlar ve rengin ingilizce ismi ile devam eder. Örneğin mavi rengin TColor ismi clblue 'dur.
Bütün bileşenlerde renk özelliği vardır. Bileşenlerde renk ayarı yapmak için bileşenin Color özelliği seçilir ve yanındaki ... kısmına tıklanır. Ekrana renkler ve renklerin cl ile başlayan isimleri bulunan liste gelecektir. Bu listeden istenilen renk seçilebilir.
İstenilen renk bulunamazsa RGB fonksiyonu kullanılabilir. RGB (Red, Green, Blue- Kırmızı, Yeşil, Mavi) kelimelerinin baş harflerinden oluşur. Windows RGB renk sistemini kullanır. RGB, üç rengi içerir ve her renk için 255 farklı renk tonu vardır.
Böylece üç renk için 255x255x255 farklı renk tonu olacağından milyonlarca farklı renk tonu elde edilir. RGB fonksiyonunun kullanımına aşağıdaki örnekler verilebilir.
![]() |
![]() |
Windows ekrana yazı yazarken yazıtiplerini kullanılır. Windows genellikle TrueType (Gerçek Tip) yazıtipi çeşitini kullanır. TrueType yazıtiplerinin özelliği boyutlandırma işlemlerinden sonra karakterlerin şeklinde herhangi bozulma olmamasıdır. Ayrıca yazıcı çıktılarında da herhangi bozulma olmaz. Yazıtiplerinin name (yazıtipi ismi), size (yazıtipi boyu), style (yazıtipi stili) ve color (yazıtipi rengi) özellikleri vardır. Delphi yazıtipi için TFont özelliği kullanır. Bütün bileşenlerde yazıtipi özelliği vardır. Yazıtiplerinin tüm özellikleri delphi ile kontrol edilebilir.
Label1.Font.Name := 'Arial'; {Yazitipi Arial olarak ayarlanıyor}
Label1.Font.Size := 12; {Yazitipi boyu 12 olarak ayarlanıyor}
Label1.Font.Style := [fsItalic, fsUnderline]; {Yazitipi stili yatık ve altıçizgili olarak ayarlanıyor}
Label1.Font.Color := clblue; {Yazitipi rengi mavi olarak ayarlanıyor}
Canvas delphinin grafik çizim amacıyla kullandığı önemli özelliklerden biridir. TForm ve TGraphicControl gibi yüksek seviyeli sınıflar Canvas (Tuval) özelliğine sahiptirler. Bileşenler, canvası grafik çizim amacıyla kullanılırlar. Canvas çizim için pen (kalem), brush (fırça) ve font (yazıtipi) gibi araçları kullanır.
Pen (Kalem), canvasın kullandığı önemli araçlardan biridir. Pen, canvas üzerine daha sonra çizilecek olanların çizim şeklini ayarlamak için kullanılır. Pen'in, color(renk), width (genişlik), style (stil), mode (mod) özellikleri vardır. Bu özellikleri değiştirerek çizilecek olan çizginin özellikleri ayarlanır.
Pen'in Color (Renk) özelliği ile çizilecek çizginin rengi ayarlanır. Örneğin form1 üzerine çizilecek çizginin rengini mavi olarak ayarlamak için gereken kod aşağıdaki şekildedir:
Form1.Canvas.Pen.Color := clblue;
Pen'in Width (Genişlik) özelliği ile çizilecek çizginin piksel (pixel) cinsinden genişliği ayarlanır. Örneğin form1 üzerine çizilecek çizginin genişliğini 5 piksel olarak ayarlamak için gereken kod aşağıdaki şekildedir:
Form1.Canvas.Pen.Width := 5;
Pen'in Style (Stil) özelliği ile ise çizilecek çizginin stili ayarlanır. Stil isimleri "ps" (penstyle) harfleri ile başlar. Çeşitli stiller vardır. Kullanılabilecek çizim stilleri şunlardır:

Örneğin form1 üzerine çizilecek çizginin stilini kesik-kesik olarak ayarlamak için gereken kod aşağıdaki şekildedir:
Form1.Canvas.Pen.Style := psDash;
Pen'in Mode(Mod) özelliği ile ise çizilecek çizginin çizilme şekli ayarlanır. Mod isimleri "pm" (penmode) harfleri ile başlar. Çeşitli modlar vardır. Kullanılabilecek çizim modlarından bazıları şunlardır:
| pmBlack | Her zaman siyah | 0 |
| pmWhite | Her zaman beyaz | 1 |
| pmNot | Hedef D rengi tersini alır | not D |
| pmCopy | Kaynak S rengi alır | S |
| pmNotCopy | Kaynak S renginin tersini alır | not S |
| pmXor | Kaynak ve Hedef renklerin kombinasyonunu alır | S xor D |
| pmNotXor | Kaynak ve Hedef renklerin kombinasyonunun tersini alır | not (S xor D) |
Brush (Fırça), canvasın kullandığı önemli araçlardan biridir. Brush, canvas üzerinde alanları veya şekilleri doldurmak için kullanılır. Brush ile sonra yapılacak çizimlerde geçerli olacak dolgu ayarlanır. Brush'ın, color(renk), style (stil), bitmap(resim) özellikleri vardır. Bu özelliklerle doldurma şekli ayarlanır.
Brush'ın Color (Renk) özelliği ile doldurulacak renk ayarlanır. Örneğin form1 üzerine yapılacak dolgu rengini mavi olarak ayarlamak için gereken kod aşağıdaki şekildedir:
Form1.Canvas.Brush.Color := clblue;
Brush'ın Style (Stil) özelliği ile ise dolgunun stili ayarlanır. Stil isimleri "bs" (brushstyle) harfleri ile başlar. Çeşitli stiller vardır. Kullanılabilecek çizim stilleri şunlardır:


Örneğin form1 üzerine çizilecek dolgu stilini yatay çizgiler şeklinde ayarlamak için gereken kod aşağıdaki şekildedir:
Form1.Canvas.Brush.Style := bsHorizontal;
Brush'ın Bitmap (resim) özelliği ile ise doldurulacak resim ayarlanır. Örneğin form1 üzerine çizilecek resimin seçilmesini ve ekrana çizilmesini sağlayan kod aşağıdaki şekildedir:
| var Bitmap: TBitmap; begin Bitmap := TBitmap.Create; try Bitmap.LoadFromFile('Dolgu.bmp'); Form1.Canvas.Brush.Bitmap := Bitmap; Form1.Canvas.FillRect(Rect(0, 0, 100, 100)); finally Form1.Canvas.Brush.Bitmap := nil; Bitmap.Free; end; end; |
Pixels (Piksel), canvasın kullandığı önemli araçlardan biridir. Pixels ile canvas üzerinde istenilen pikselin (nokta) rengi istenilen renge ayarlanabilir.
Pixels, TColor tipindedir. Pixels, canvas üzerinde piksel cinsinden x ve y konumu, TColor cinsinden renk bilgisi olmak üzere üç parametre ile kullanılır. Kullanımı : Canvas.Pixels[Nokta x, Nokta y] := Renk şeklindedir.
Aşağıdaki örneklerde canvas üzerinde iki nokta kırmızı ve mavi renge dönüştürülmektedir.
Form1.Canvas.Pixels[0, 0] := clred; {Canvas üzerindeki x=0, y=0 pikseli kırmızı ayarlanıyor}
Form1.Canvas.Pixels[10, 30] := clblue; {Canvas üzerindeki x=10, y=30 pikseli mavi ayarlanıyor}
MoveTo ve LineTo, canvas'ta çizgi çizmek için kullanılan iki prosedürdür. MoveTo prosedürü canvas üzerinde bir nokta belirlenmesini sağlar. Kullanımı: Canvas.MoveTo(Başlangıç x, Başlangıç y) şeklindedir.
LineTo prosedürü ise MoveTo ile belirlenmiş başlangıç noktasından başlayacak olan çizgini bitiş noktasını belirler ve çizgiyi çizer. Kullanımı: Canvas.LineTo(Bitiş x, Bitiş y) şeklindedir. Aşağıda canvas üzerinde bir çizgi çizen kod görülmektedir:
Form1.Canvas.MoveTo(0, 0); {Canvas üzerindeki x=0, y=0 başlangıç noktası alınıyor}
Form1.Canvas.LineTo(50, 70); {Canvas üzerindeki x=50, y=70 bitiş noktası belirlenip çizgi çiziliyor}
| TPoint Tipi: type TPoint = packed record X: Longint; Y: Longint; end; |
TRect Tipi: TRect = packed record case Integer of 0: (Left, Top, Right, Bottom: Integer); 1: (TopLeft, BottomRight: TPoint); end; |
TPoint, delphide tanımlanmış olan bir tipdir. Genelikle grafik komutlarında kullanılır. Bir nokta için gerekli olan x, y konumları için iki adet değişken gerekir.
TPoint ile iki değişken yerine bir değişken kullanabilmesini sağlar. Aşağıda TPoint kullanılmadan ve kullanılarak yazılan kodlar görülmektedir:
Var x, y: Longint; {Bir nokta için iki değişken tanımlanıyor}
Begin
x := 100; y := 200; {Değişkenlere değer saklanıyor}
TPoint ile aynı tanımlama:
Var k: TPoint; {Bir nokta için bir değişken tanımlanıyor}
Begin
k.X := 100; k.Y := 200; {Bir değişkene iki ayrı değer saklanıyor}
TRect ise iki ayrı nokta için gereken dört ayrı (başlangıç ve bitiş) konumunu saklamak için tanımlanmış bir tiptir.
Dört ayrı değişken kullanmak yerine TRect ile dört konum bir değişkende saklanabilir. TRect iki adet TPoint şeklinde kullanılabildiği gibi TPoint'in dörtlüsü gibi de kullanılabilir.
Aşağıda TRect kullanılmadan ve kullanılarak yazılan kodlar görülmektedir:
Var x, y, x1, y1 : Longint; {Bir nokta için dört değişken tanımlanıyor}
Begin
x := 100; y := 200; x1 := 110; y1 := 210; {Değişkenlere değer saklanıyor}
TRect ile aynı tanımlama:
Var k: TRect; {İki nokta için bir değişken tanımlanıyor}
Begin
k.Left := 100; k.Top := 200; k.Right := 110; k.Bottom := 210; {Değişkene dört ayrı değer saklanıyor veya}
k.Topleft.X := 100; k.TopLeft.Y := 200; k.BottomRight.X := 110; k.BottomRight.Y := 210; {Değişkene başka şekilde dört ayrı değer saklanıyor}
Ellipse, canvas'ta elips veya daire çizmek için kullanılan prosedürdür. Ellipse prosedürü ile başlangıç ve bitiş noktaları verilen elips veya daire çizilir. Daire ve elips çizerken dikkat edilmesi gereken husus koordinatların görünmez dörtgen çizermiş gibi verilmesi gerektiğidir.
Daire veya elips bu görünmez dörtgene göre ve dörtgenin içine uyacak şekilde çizilir. Daire için başlangıç ve bitiş noktaları arasındaki fark x ve y için eşit olmalıdır. Kullanımı: Canvas.Ellipse(Başlangıç x, Başlangıç y, Bitiş x, Bitiş y) veya Canvas.Ellipse(const Rect: TRect) şeklindedir.
Aşağıda canvas üzerinde bir daire çizen kod ve elips çizen kodlar görülmektedir:
Form1.Canvas.Ellipse (0, 0, 30, 30); {Canvas üzerine daire çiziliyor}
Form1.Canvas.Ellipse (0, 0, 50, 70); {Canvas üzerine elips çiziliyor veya}
Var k: TRect; {k değişkeni TRect şeklinde tanımlanıyor}
Begin
k.Left := 0; k.Top := 0; k.Right := 50; k.Bottom := 70; {k değişkenine değerler veriliyor}
Form1.Canvas.Ellipse ( k ); {Canvas üzerine aynı elips farklı şekilde çiziliyor}
Rectangle, canvas'ta dikdörtgen veya kare çizmek için kullanılan prosedürdür. Rectangle prosedürü ile başlangıç ve bitiş noktaları verilen dikdörtgen veya kare çizilir. Kare için başlangıç ve bitiş noktaları arasındaki fark x ve y için eşit olmalıdır.
Kullanımı: Canvas.Rectangle(Başlangıç x, Başlangıç y, Bitiş x, Bitiş y) veya Canvas.Rectangle(const Rect: TRect) şeklindedir.
Aşağıda canvas üzerinde bir kare çizen kod ve dikdörtgenler çizen kodlar görülmektedir:
Form1.Canvas.Rectangle (0, 0, 30, 30); {Canvas üzerine kare çiziliyor}
Form1.Canvas.Rectangle (0, 0, 50, 70); {Canvas üzerine dikdörtgen çiziliyor veya}
Var k: TRect; {k değişkeni TRect şeklinde tanımlanıyor}
Begin
k.Left := 0; k.Top := 0; k.Right := 50; k.Bottom := 70; {k değişkenine değerler veriliyor}
Form1.Canvas.Rectangle ( k ); {Canvas üzerine aynı dikdörtgen farklı şekilde çiziliyor}
RoundRect, canvas'ta köşeleri yuvarlaklaştırılmış dikdörtgen veya kare çizmek için kullanılan prosedürdür. Rectangle prosedürü ile başlangıç, bitiş noktaları ve köşelerdeki yuvarlaklık oranı verilen dikdörtgen veya kare çizilir.
Kare için başlangıç ve bitiş noktaları arasındaki fark x ve y için eşit olmalıdır. Kullanımı: Canvas.Rectangle(Başlangıç x, Başlangıç y, Bitiş x, Bitiş y, Yuvarlaklık Oranı x, Yuvarlaklık Oranı y) şeklindedir.
Aşağıda canvas üzerinde bir kare çizen kod ve dikdörtgenler çizen kodlar görülmektedir:
Form1.Canvas.RoundRect (0, 0, 30, 30, 5, 5); {Canvas üzerine köşeleri yuvarlak kare çiziliyor}
Form1.Canvas.RoundRect (0, 0, 50, 70, 5, 7); {Canvas üzerine köşeleri yuvarlak dikdörtgen çiziliyor}
Arc, canvas'ta yay çizmek için kullanılan prosedürdür. Arc prosedürü ile köşe koordinatları, başlangıç ve bitiş noktaları verilen yay çizilir.
Kullanımı: Canvas.Arc(Sol-üst x, Sol-üst y, Sağ-alt x, Sağ-alt y, Başlangıç x, Başlangıç y, Bitiş x, Bitiş y) şeklindedir.
Aşağıda canvas üzerinde yay çizen kod görülmektedir:
Form1.Canvas.Arc(10, 10, 200, 150, 30, 30, 150, 100); {Canvas üzerine yay çiziliyor}
Pie, canvas'ta dolu yay (pasta dilimi) çizmek için kullanılan prosedürdür.Pie prosedürü ile köşe koordinatları, başlangıç ve bitiş noktaları verilen dolu yay çizilir.
Kullanımı: Canvas.Pie(Sol-üst x, Sol-üst y, Sağ-alt x, Sağ-alt y, Başlangıç x, Başlangıç y, Bitiş x, Bitiş y) şeklindedir.
Aşağıda canvas üzerinde dolu yay çizen kod görülmektedir:
Form1.Canvas.Pie(10, 10, 200, 150, 30, 30, 150, 70); {Canvas üzerine dolu yay çiziliyor}
Chord, canvas'ta uçları birleştirilmiş yay çizmek için kullanılan prosedürdür. Chord prosedürü ile köşe koordinatları, başlangıç ve bitiş noktaları verilen uçları birleştirilmiş yay çizilir.
Kullanımı: Canvas.Chord(Sol-üst x, Sol-üst y, Sağ-alt x, Sağ-alt y, Başlangıç x, Başlangıç y, Bitiş x, Bitiş y) şeklindedir. Aşağıda canvas üzerinde uçları birleştirilmiş yay çizen kod görülmektedir:
Form1.Canvas.Chord(10, 10, 200, 150, 30, 30, 150, 70); {Canvas üzerine uçları birleştirilmiş yay çiziliyor}
Polygon, canvas üzerine başlangıç ve bitiş noktaları bitişik olan birleşik çizgi dizisi çizmek için kullanılır. Kullanımı: Canvas.Polygon([Point(x,y),...]); şelindedir. Noktalar TPoint tipinde girilir. İstenilen sayıda konum (x,y noktaları) tanımlanabilir. Başlangıç ile bitiş otomatik birleştirilecektir. Aşağıda canvas üzerinde poligon çizen kod görülmektedir:
Form1.Canvas.Polygon([Point(10, 10), Point(30, 10), Point(130, 30), Point(240, 120)]);
Polyline, canvas üzerine birleşik çizgi dizisi çizmek için kullanılır. Kullanımı: Canvas.Polyline([Point(x,y),...]); şelindedir. Noktalar TPoint tipinde girilir. İstenilen sayıda konum (x,y noktaları) tanımlanabilir. Aşağıda canvas üzerinde polyline çizen kod görülmektedir:
Form1.Canvas.Polyline([Point(40, 10), Point(20, 60), Point(70, 30), Point(10, 30), Point(60, 60), Point(40, 10)]);
DirectX, Microsoft tarafından gelişirilen, windows üzerinde çalışan, multimedia donanımına doğrudan ve hızlı erişim sağlayan, özellikle oyun yapımında kullanılan bir kütüphaneler topluluğudur.
DirectX bilgisayarın grafik donanımına (Ekran Kartı, Ses Kartı, Fare, Klavye, Joystick) doğrudan erişir, donanımla birebir iletişim kurar ve donanımı en iyi şekilde kullanır. Bu sayede Directx ile yapılmış multimedya uygulamaları çok daha hızlı çalışır.
DirectX'in içinde parçalara bölünmüş küçük kütüphaneler vardır:
DirectGraphics: Bu kütüphane sayesinde Grafik işlemleri gerçekleştirilir.
Daha önceki Directx sürümlerinde bu kütüphane iki parçadan oluşuyordu (Direct3D ve DirectDraw). DirectX 8.0 sürümüyle birlikte bunlar birleştirildi ve DirectGraphics oldular.
DirectInput: Bu kütüphane sayesinde giriş aygıtları (fare, klavye, joystick) ile bağlantı kurulabilir.
DirectSound: Bu kütüphane sayesinde programlara ses efektleri eklenebilir. Bilgisayarın ses kartıyla bağlantı kurulmasına izin verir.
DirectPlay: Bu kütüphane sayesinde ağ (network) olayları programlarda kullanabilir. Çoklu oyuncu desteği sağlar.

DelphiX bileşen paketi, Delphi altından DirectX kullanımını sağlar ve kolaylaştırır.
Delphix bileşen paketi ücretsizdir, bu paket ve örnek programlar, internette kolayca bulunabilir. DelphiX'in içinde hem kaynak kodları hem de her Delphi sürümü için hazır kurma paketleri bulunmaktadır.
Delphix, Borland kylix programı ile çalışmamaktadır. DelphiX'in bileşenleri ve görevleri sırasıyla şunlardır:

![]() | DX3D : Bu bileşen eski DirectX sürümleriyle uyumluluk amacıyla konulmuştur. Kullanılmasına gerek yok. |
![]() | DXDIB : Bir tane aygıttan bağımsız bit eşlem resimini (Device Independent Bitmap-DIB) tutar. |
![]() | DXDraw : Genel DirectX bileşeni. DelphiX kullanabilmek için her projede bir tane tanımlı olması gerekir. Bütün yüzeyler (surface) ve diğer bileşenlerin ana nesnesidir. |
![]() | DXImageList : Birden fazla DIB resmini saklamaya yarar, özellikle iki boyutlu oyunlarda grafik yönetimini kolaylaştırır. İçeriğini DelphiX'in özel formatı olan *.dxg dosyalarına saklayabilir ya da bu dosyalardan içerik yüklenebilir. |
![]() | DXInput : DirectInput nesnesinin kullanımını sağlar; yani klavyeden, fareden ve joystickten gelen mesajları algılanmasını sağlar. |
![]() | DXPaintBox : Delphinin standart TImage'inin DelphiX versiyonu. |
![]() | DXPlay : DirectPlay nesnesinin kullanımını sağlar, Multiplayer oyunlarda kullanılır. |
![]() | DXSound : DirectSound nesnesinin kullanımını sağlar, TDXWave veya TDXWaveList'teki dosyaların çalınabilmesi için projede bir tane bulunmalıdır ve bu bileşenlerin DXSound özelliklerine bu bileşen seçilmelidir. |
| DXSpriteEngine : Özellikle Sprite içeren iki boyutlu oyunlarda kullanılır, resim saklama, koordinat tutucu ve çarpışma denetimi gibi gelişmiş özellikler içerir. | |
![]() | DXTimer : Delphi'nin System bileşenleri altında bulunan Timer'dan çok daha hassas bir timer, genellikle her oyunda bulunan genel döngüyü içerir. |
![]() | DXWave : Bu bileşen aynı TDXDIB gibidir ve tek bir wave dosyasını saklayabilir. |
![]() | DXWaveList : Bu bileşen de aynı TDXImageList gibi birden fazla wave dosyasının saklanmasında kullanılır, kendi dosya uzantısı *.dxw'dir. |
DelphiX bileşenleri olmadan da Delphi ile DirectX kullanılabilir. Bunun için gerekli .pas dosyaları ve kodları internette mevcuttur.

Open Graphics Library (OpenGL), 2 veya 3 boyutlu grafik çizdirmek için kullanılan bir API'dir bir başka deyişle kitaplıktır. Bu kitaplık yazılım geliştiricilere -donanımdan bağımsız olarak- grafik donanımını yönetme şansı verir. İlk olarak 1992 de Silicon Graphics tarafından geliştirilmiştir.
OpenGL, programcının grafik donanımlarına erişmesi için bir arayüz sunar. Tüm platformlarda çalışabilir. Düşük seviyeli geniş modelleme özelliğine sahip ve render yazılım paketleri içeren bir arayüz programıdır. Grafik programının ihtiyaçlarına büyük oranda cevap verir. Oyunlarda, cad dizayn model çizim programları başlıca programlardır. 3D oyunlarda render özelliği fazlasıyla kullanılır. Örneğin Quake III bu arayüzü kullanmıştır. Düşük seviyeli (detaylı) render özelliği sayesinde programcıya yüksek bir kontrol ortamı sunar. Programcılara sağladığı kütüphane desteği sayesinde sürekli gelişime açıktır. Bunu da "The OpenGL Utility Library" sağlar. DirectX'den farklı olarak, OpenGL sadece grafik API'dir. Multimedya (ses) ve Network desteği sağlamaz. Zamanla IBM, NVIDIA, Microsoft gibi firmalarca da destek verilmiştir. OpenGL, yüzlerce fonksiyonun bulunduğu grafik donanımına hükmeden güçlü bir kütüphane sunar. Programda kullanacağımız renk, efekt ve ışık oyunlarını kolaylıkla yapabilmemizi sağlar. Fonksiyonların çokluğundan da anlaşılacağı gibi programcıya detaylı grafik kontrolü sağlar.
OpenGL için iki adet dinamik bağlantı kütüphanesi (.dll) dosyasının (OPENGL32.dll ve GLU32.dll) (Microsoft Opengl kütüphanesi) Windows dizinine kopyalanması gerekir. C++ ile OpenGL kullanmak için OpenGL32.lib, glaux.lib, winmm.lib dosyalarının derleyicinin LIB dizinine kopyalanması ve başlık dosyalarının (.h) INCLUDE dizinine konulması gerekir. Delphi için ise OpenGL.pas dosyasının Delphinin LIB dizinine kopyalanması gerekir. Bu dosyalar internette küçük bir arama ile bulunabilir.
GLUT (OpenGL Utility Toolkit), OpenGL Grafik Api'sine destek olması için Mark J. Kilgard tarafından yazılmıştır. OpenGL, renderleme komutları içermesine rağmen windows ve diğer işletim sistemlerinden bağımsız olarak dizayn edilmiştir. Bunun sonucunda pencere açma, klavye ve fare ile ilgili olaylar hakkında hiçbir komut içermez ama bu işlemler yapılmadan da renderleme ve interaktiflik sağlanmaz. OpenGL Grafik Api'si içerisinde işletim sistemine dair hiç bir fonksiyon içermez buna rağmen işletim sistemi ile ilişkide de bulunması gerekir. Mesela inputları dinlemesi, pencere için işletim sisteminin numara alması vb. GLUT kütüphaneside bu tarz işleri arka planda gerçekleşmesini sağlar. Bunlar GLUT kütüphanesi olmadan win32 ile de gerçekleştirebilir. Fakat GLUT kullanmak hem kolaydır hem de GLUT'un gelişmiş fonksiyonları vardır. OpenGL sadece nokta, çizgi ve poligon çizgi çizme gibi temel çizim özelliklerine sahipken GLUT gelişmiş üç boyutlu nesneleri (küre, silindir, koni vb) çizme yeteneğine sahiptir.
GLUT için Glut32.dll ve Glaux.dll dinamik bağlantı kütüphanesi dosyalarının Windows dizinine kopyalanması gerekir. C++ ile GLUT kullanmak için gerekli .lib dosyalarının derleyicinin LIB dizinine ve başlık dosyalarının (.h) INCLUDE dizinine kopyalanması gerekir. Delphi için ise Glut.pas, Glaux.pas ve Glut_Api_ver.inc dosyalarının Delphinin LIB dizinine kopyalanması gerekir. Bu dosyalar internette küçük bir arama ile bulunabilir.
GLUT ve OpenGl kullanırken glutInit komutu ile opengl'nin başlatılması gerekmektedir. Bu komutu bir parametre almaktadır. Bu parametre "MS_LIB" yada "SGI_LIB" olabilir. Bu parametrenin "MS_LIB" olması Microsoft'un Windows ile beraber gelen opengl32.dll ve glu32.dll kütüphanelerin kullanılacağı anlamına gelir. Bu dosyalar Windows'un System32 dizininde bulunurlar. Eğer bu dosyalar yoksalar internette aramayla bulunup aynı dizine kopyalanmaları gerekir. Eğer parametre "SGI_LIB" ise Silicon Graphics, Inc. (http://www.sgi.com) şirketinin opengl.dll ve glu.dll kütüphanelerinin kullanılacağı anlamına gelir. Bu dosyaların internette aramayla bulunup Windows'un System32 dizine kopyalanmaları gerekir.
Burada bahsedilen dosyaları sıkıştırılmış bir dosya halinde sitenin kaynaklar sayfasında bulabilirsiniz.Delphide yapılmış ekrana üçgen çizen basit bir opengl ve glut projesi:![]() |
| unit Unilkpencere; interface uses SysUtils, Forms, OpenGl, Glut; Type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure Goster;Cdecl; Begin glClear(GL_COLOR_BUFFER_BIT); glColor3f(0, 0, 1); //Mavi glBegin(GL_POLYGON); glVertex2f (0.0, 0.0); glVertex2f (0.2, 0.0); glVertex2f (0.2, 0.5); glEnd(); glFlush(); end; procedure TForm1.FormCreate(Sender: TObject); Begin glutInit(MS_LIB); //MS kütüphanesi ile opengl açar // Burası glutInit(SGI_LIB) şeklinde de olabilir glutCreateWindow('İlk Pencere'); //Pencere ismi glutDisplayFunc(Goster); //Opengl'nin kullanacağı çizim fonksiyonunun belirlenmesi glutMainLoop; end; end. |
Delphide yapılmış ekrana bir daire çizen opengl ve glut projesi:![]() |
| unit Unit1; interface uses SysUtils, Forms, OpenGl, Glut; Type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure Goster;Cdecl; const RADIUS=0.75; var x, y:real; i:integer; Begin glClear(GL_COLOR_BUFFER_BIT); glColor3f(0, 0, 1); //Mavi glPointSize(5.0); //Nokta boyu glBegin(GL_POINTS); for i:= 1 to 360 do begin x := RADIUS * sin((i)*3.14/180); y := RADIUS * cos((i)*3.14/180); glVertex2f(x,y); end; glEnd(); glFlush(); end; Procedure Ayar; Begin glClearColor(1.0, 1.0, 0.0, 0.0); //Arka rengi sarı glShadeModel(GL_FLAT); //Tek renk hakim olsun end; procedure TForm1.FormCreate(Sender: TObject); Begin glutInit(MS_LIB); //MS kütüphanesi ile opengl açar // Burası glutInit(SGI_LIB) şeklinde de olabilir glutInitWindowPosition(300,300); //Pencere pozisyonu glutInitWindowSize(200, 200); //Pencere boyu glutInitDisplayMode(GLUT_RGB or GLUT_SINGLE); //Gösterme modunun belirlenmesi glutCreateWindow('Mavi Daire'); //Pencere ismi Ayar; //Başlangıç ayarları glutDisplayFunc(Goster); //Opengl'nin kullanacağı çizim fonksiyonunun belirlenmesi glutMainLoop; end; end. |
Burada bulunan kodları dosya halinde sitenin kaynaklar sayfasında bulabilirsiniz.

OpenAl (Open Audio Library), OpenGl Creative Labs Inc. tarafından geliştirilmiş açık kodlu (GNU Genel Kamu Lisanslı) Ses-Müzik(Audio) kütüphanesidir. OpenAl, programcının yüksek kaliteli, çok kanallı ses-müzik çıkışı işlemleri yapabilmesini sağlar. OpenAl, Linux, MacOS, Windows ve BeOS işletim sistemlerini desteklemektedir. OpenAl, C++ dili için yazılmış olsada Delphi için gerekli .pas dosyaları internette bulmak mümkündür. OpenAl için OpenAL32.dll ve diğer dinamik bağlantı kütüphanesi dosyalarının Windows dizinine kopyalanması gerekir.

Simple DirectMedia Layer (SDL), GLUT'a benzeyen fakat daha gelişmiş özelliklere sahip olan multimedya kütüphanesidir. SDL ile ses, klavye, fare, joystick, opengl ve 2B video fonksiyonları rahatlıkla kullanılabilir. SDL, Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX ve QNX işletim sistemlerinde kullanılabilir. SDL C dili ile yazılmıştır ve C++ ile çalışabilir. Diğer programlama dilleri ile kullanılabilir. Delphide kullanmak için gerekli olan .pas dosyaları internetten küçük bir arama ile bulunabilmektedir. SDL, GNU LGPL sürüm 2 (Genel Kamu lisansı) ile dağıtılmaktadır.
SDL için Sdl.dll dinamik bağlantı kütüphanesi dosyasının Windows dizinine kopyalanması gerekir.



![]() ![]() ![]() ![]() ![]() ![]() |