Bu sayfadaki yazılar
Sayfanın metni
Sayfa 61
return 0; }
Hepsi bu kadar. Yukarıda tanımlanan "buffer" dizisine 24 bitlik değerler vererek RGB (kırmızı, yeşil, mavi) renkler tanımlayabiliyorsunuz. Bunun haricinde geri kalan kullanım DOS'tan tanıdığımız 13h (320x200x256) moduyla aynı. Yani (x, y) koordinatına pixel basmak için buffer dizisinin [y * WIDTH + x]inci elemanına değer vermeniz gerekiyor. 320x200 çözünürlüğü için [(y << 8) + (y << 6) + x] şeklinde optimize edilebilir. Bu elemana vereceğiniz değer ise;
buffer[y * WIDTH + x] = (red << 16) | (green << 8) | blue;
Şeklinde ifade edilebilir. Buradaki "red", "green" ve "blue" 0-255 arası değer alabilen birer byte olarak verilmelidir.
Elbette ki TinyPTC kütüphanesinin yukarıdaki dosya haricinde 10 civarında program dosyası ve proje dosyaları var. Ancak siz yalnızca tek bir dosyayla uğraşarak istediğinizi yapabiliyorsunuz. Bunun yanı sıra "tinyptc.h" dosyasını düzenleyerek de projenin çeşitli parametrelerini değiştirmeniz mümkün. Örnek olarak projenin DirectDraw, GDI ya da VFW arabirimlerinden herhangi birini kullanmayı seçebiliyorsunuz. Ayrıca programınızın tam ekran ya da pencere modunda çalışmasını, pencere modunda çalışacaksa pencere özelliklerini bu dosyaya yalnızca comment (açıklama, yorum) sembolleri ekleyip çıkararak düzenleyebiliyorsunuz. Örnekler:
DirectDraw kullanmak için: #define __PTC_DDRAW__ //#define __PTC_GDI__ //#define __PTC_VFW__
GDI kullanmak için: //#define __PTC_DDRAW__ #define __PTC_GDI__ //#define __PTC_VFW__
VFW kullanmak için: //#define __PTC_DDRAW__ //#define __PTC_GDI__ #define __PTC_VFW__
TinyPTC'yi indirebileceğiniz web adresi:
http://gaffer.scene.org/tinyptc/
Eğer TinyPTC'yi Visual Studio ile kullanmak isterseniz işiniz çok kolay çünkü zaten yukarıdaki linkten indirebileceğiniz örnek proje Visual Studio 6.0 için hazır geliyor. VS.NET'e de kolayca çevrilebiliyor.
Ancak TinyPTC Assembler da kullanıldığı için proje derlenirken NASM'ye ihtiyaç duyuyor. Bu tool elinizde yoksa aşağıdaki adreslerden indirebilir ve kurabilirsiniz.
http://www.geocities.com/SiliconValley/Heights/1295/ http://nasm.sourceforge.net/doc/html/ nasmdoc1.html
Projeyi LCC ile derlemek isterseniz projede yalnızca bir iki küçük değişiklik yapmanız gerekiyor. Bunun haricinde üretilen objeleri linkleyecek bir batch dosyası hazırlamanız ya da LCC için yazılmış bir arabirim bulup bu arabirimden linker ayarlarını yapmanız gerekiyor. LCC ile kullanım için bir batch dosyası örneği:
compile.bat @echo off del test.exe del ddraw.obj del convert.obj del test.obj lcc ddraw.c -nw lcc convert.c @echo on lcc test.c lcclnk test.obj mmx.obj ddraw.obj convert.obj -o test.exe - subsystem windows pause test
Ancak LCC kullanmaya çalışırken başka problemler de yaşayabilirsiniz. Bunların hepsinin çözümleri Google'da biraz dolaşarak bulunabiliyor ancak kolay yolu seçmek isterseniz Visual C++ 6.0'ı tavsiye ederim.
Bu Yöntemlerin Başka Platformlar İçin Kullanılması:
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 60
sinus1.vbs Dim i, a Const pi = 3.1415926536
For i = 0 to 255 a = a & sin(i / 128 * pi) & ", " Next MsgBox a
Evet işte oldu... mu? Tam olarak değil. Çünkü çıktıyı artık browser ekranına veremiyoruz. Mesaj kutusu kullanarak ekrana yazdırdık ancak yine sorunlar var. Birincisi mesaj çok uzun olunca tamamı ekrana gelmiyor. İkincisi mesaj olarak ekranda görsek de kes&yapıştır işlemini gerçekleştiremiyoruz. Peki ne yapmamız gerekiyor? En iyi yöntem sonuçları bir dosyaya yazdırmak. Bunun için de artık ActiveX kullanmaya başlayabiliriz.
sinus2.vbs Dim i, a Dim oFSO, tf Const pi = 3.1415926536 Set oFSO = CreateObject("Scripting.FileSystemObject") Set tf = oFSO.CreateTextFile("sonuclar.txt", True) For i = 0 to 255 tf.WriteLine(sin(i / 128 * pi)) Next tf.Close Set tf = Nothing Set oFSO = Nothing
İşte şimdi oldu. Ancak sonuçlara dikkat edecek olursanız bazıları "4,90676743275773E-02" şeklinde biçimlendirilmiş. Bu sorunu gidermek için Visual Basic ve Visual Basic Scripting'in desteklediği FormatNumber fonksiyonunu kullanabiliriz. Bu durumda scriptin son hali;
sinus3.vbs Dim i, a Dim oFSO, tf Const pi = 3.1415926536 Set oFSO = CreateObject("Scripting.FileSystemObject") Set tf = oFSO.CreateTextFile("sonuclar.txt", True) For i = 0 to 255 tf.WriteLine(FormatNumber(sin(i / 128 * pi), 7)) Next tf.Close Set tf = Nothing Set oFSO = Nothing
Bu hale geliyor. Burada FormatNumber'a verdiğimiz ikinci parametre değeriyle virgülden sonra 7 basamağa hassas bir sayı olarak biçimlendirmiş oluyoruz.
ActiveX kullanımıyla birçok şey yapmak, hatta hatta OpenGL, DirectX kullanmak da mümkün ancak Visual Basic Script ya da Java Script'i bu amaçla kullanmak pek de anlamlı olmayacaktır. Bu scripting dillerini bu tür küçük hesaplar için kullanmanızı tavsiye ederim.
TinyPTC:
Aslında TinyPTC yalnızca ekrana nokta basmaya yarayan bir grafik kütüphanesi. Yani çizgi çizmek için bile kendi rutinlerinizi yazmanız gerekiyor. Eğer bu tür şeylerin hazır geldiği bir kütüphane istiyorsanız OpenPTC ya da SDL sizin için daha uygun olacaktır. Ancak kullanımı en basit ve en temel kütüphane olması nedeniyle TinyPTC ile başlamayı uygun gördüm.
TinyPTC yalnızca 3 fonksiyondan oluşuyor.
• ptc_open • ptc_update • ptc_close
Hepsi bu kadar. Kullanımları da oldukça basit. Aşağıda çok basit bir kullanım örneği bulabilirsiniz.
test.c #include "tinyptc.h"
#define WIDTH 320 #define HEIGHT 200 #define SIZE WIDTH*HEIGHT int buffer[SIZE];
int main() { if(!ptc_open("Test Platformu", WIDTH, HEIGHT)) return 1; while(1) { // Programınızı Buraya Yazabilirsiniz ptc_update(buffer); } ptc_close();