Yazýlarýmý Daha Kolay Takip Etmek Ýçin Týklayýn!

XNA’de İKİ BOYUTLU NESNE ÇİZİMİ - 1

yazan: 8/1/2008 6:50:00 AM

Her ne kadar 3B çalışıyor olduğum için 2B’ye fazla vakit ayıramasam da bu temel öğelere burda yer vermek istiyorum. Bu yazımda bazı gerekli sınıf ve metotları anlatacağım. Sonraki yazımda ise bunları nasıl kullanacağımızı göstereceğim.

 

Sınıflar:

Texture2D sınıfı: Ekrana koyacağımız nesneyi(örneğin bir top) temsil eden grafiğin (örneğin bir top resmi) saklandığı sınıftır.

 

Vector2 sınıfı: Hepimizin lise fiziğinden bildiği hani o okla temsil edilen, i ve j gibi iki bileşeni içeren vektördür. Burda farkında olmanız gereken şey şudur ki, ekranınızda başlangıç noktası (origin) sol üst köşedir ve y ekseni yani j bileşeni aşağı doğru artmaktadır. Koordinat düzlemini baş aşağı düşünelim yani.

 

SpriteBatch sınıfı: Nesnelerimizi temsil eden sprite’ların ekrana çizilmesini sağlayan sınıftır.

XNA Game studio zaten kendisi bize bu sınıftan nesneyi yaratır.

 

Rectangle sınıfı: Çok basit olarak; Sol üst köşesinin koordinatları ve boyutlarıyla bir dikdörtgeni temsil eder.

 

Metotlar:

Content.Load<>() metodu: ContentManager sınıfının nesnesi olan Content, ki bize XNA GS tarafından sağlanmıştır; nesnesinin metodudur.  < > işaretlerinin arasına bu metot ile yükleyeceğiniz içeriği (bir texture, bir font) temsil eden bir tip yazılmalı ve parametre olarak string tipinde varlığın (asset) adı verilmelidir. Örnek olarak XNA GS’nin bize sağladığı Content klasörünün içinde “arkaPlan.tga” isminde bir resmimiz olsun. Biz de bunu içerik klasöründen alarak oyuna yüklemek isteyelim; doğal olarak bu 2 boyutlu resmi temsil edecek sınıf Texture2D olacaktır.  Yani yazmamız gereken kod: 

Texture2D backgroundTexture;

Değişkenini tanımladıktan sonra;

            backgroundTexture = Content.Load<Texture2D>("arkaPlan");

olmalıdır.

 

spriteBatch.Begin() metodu:

Bize XNA GS tarafından tanımlanan spriteBatch nesnesinin metodudur. Daha önceden anlattığım Draw() metodunun içine yazılır ve çizim işleminin nasıl yapılacağı nesnelerin nasıl ele alınacağı hakkında grafik kartına bilgi verir.

Parametre olarak;

SpriteBlendMode cinsinden bir geçiştirme biçimi alır (overload 2). Geçiştirme, alfa (saydamlık) değerlerine göre üst üste gelen nesne dokularının(texture) birbiri üstüne çizilmesi işlemidir.

Örnek olarak:

      spriteBatch.Begin(SpriteBlendMode.AlphaBlend);

Burada saydamlık(alpha) değerlerine göre geçiştirme ve çizim işleri gerçekleştirilecektir.

Bazı durumlarda üst üste gelen nesneler sorun yaratacaktır, geçiştirme istediğiniz sırayla olmayacaktır. Bu gibi durumda sıraya göre geçiştirme yapmak için yine bu metodun (overload 3) ikinci parametresi olan SpriteSortMode’tan bir sıralama tipi seçilmelidir. Örneğin nesneleri arkadan öne sıralamak için:

spriteBatch.Begin(SpriteBlendMode.AlphaBlend,

 SpriteSortMode.BackToFront, SaveStateMode.None);

SaveStateMode burada bu etkinin hatırlanması anlamına gelecektir, None yerine SaveState dersek performans kaybına uğrarız.

 

spriteBatch.Draw() metodu: 6 tane overload’ı olan bu metodu parametre parametre anlatmak yerine kısaca bahsedeyim,  bir nesnemizin, Texture2D türünden desenini, bu desenin İçine çizileceği dikdörtgeni, pozisyonununu , desenin hangi ışıkla aydınlatılacağını …vb parametre alarak nesnemizin görsel temsilini çizdirir. Örnek olarak bir arkaplan için;

 

            spriteBatch.Draw(arkaPlan, gorulebilirEkran, Color.White);

Color.White burada beyaz ışığı temsil eder ki bu da herhangi bir renk değişimi olmamasını sağlar ama diğer renk değerlerini denerseniz, resmin üzerine renkli bir ışığın etki ettiğini göreceksiniz.

 

spriteBatch.DrawString() metodu: bu metot da font’u, yazılacak yazıyı(string), içine yazılacağı dikdörtgeni(yazıyı konumlandırmak için gerekli) ve yazının rengini parametre alarak ekrana yazının çizilmesini sağlar.

      spriteBatch.DrawString(font,

                "merhaba XNA",

                new Vector2(50.0f,100.0f),

                Color.Red);

font burada 

      font = Content.Load<SpriteFont>("Arial"); 

şeklinde tanımlanmış XML formundaki bir spriteFont dosyasının temsilidir.

Şimdilik bu kadar metot yeter sanıyorum; ama gerek bu metotlarla gerekse başka metotlarla ilgili sorununuz olursa iletişime geçmekten çekinmeyin.

Currently rated 5.0 by 1 people

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Etiketler: , ,

XNA

Related posts

Comments

12/2/2008 12:26:16 AM

selatin

slm ben metal işi yapıyorum ama bazı eksik olan yan larım var ama herişi rahatlıkla yaparım proce den

selatin

12/2/2008 12:28:45 AM

selatin

işim bana oyun cak gibi geliyor
çelik kon dsyon ve otobüs durağı benzin lik istasyonu
kapı korkuluk

selatin

12/5/2008 7:18:56 AM

Erçin Yontar

Merhabalar Selahattin Bey, Anladığım kadarıyla modelleme işleri ile ilgileniyorsunuz. Bildiğiniz gibi XNA bir Oyun geliştirme ortamı ve gerçekten amatör oyun geliştiriciler modellere yani oyunun içinde hareket edecek nesnelere ihtiyaç duyuyor, eğer oyun geliştiriciliği ile ilgileniyorsanız, modelleme çalışmalarını heyacanla bekliyor olacağız, ve bunları oyunlarında sizin adınızın belirtilmesi karşılığında insanlarla paylaşabiliriz. Ne dersiniz?

Erçin Yontar tr

11/9/2009 8:26:29 PM

pay day loans

Nice resource. rss feed added

pay day loans us

12/21/2009 7:09:44 PM

Alaska Payday Loans

I always wanted to write in my site something like that but I guess you'r faster Smile

Alaska Payday Loans us

1/12/2010 3:20:11 PM

Criminal Background Check

I have bookmarked it. This post is really so interesting and informative. Thanks for sharing with us.

Criminal Background Check us

1/23/2010 12:31:02 AM

pay day loans

He who angers you conquers you.

pay day loans us

2/7/2010 9:33:49 PM

alta white

What simple action could you take today to produce a new momentum toward success in your life?

alta white us

3/3/2010 12:42:22 PM

ucvhost

Thanks for the great post,i love to read articles that are informative and beneficial in nature.

ucvhost us

3/30/2010 12:29:47 PM

ucvhost

Your blog is my favorite, congratulates. Often I'll look here, a lot of information and nice site.

ucvhost us

4/3/2010 3:27:07 PM

Kegel exercises for men

i found your blog when i was looking for a different sort of informtion but i was very happy and glad to read throu your blog. The information available here is great.

Kegel exercises for men us

4/3/2010 3:39:10 PM

Kegels exercises for men

Hi there, just wanted to leave a quick comment about the interface of your blog. It is really easy on the eye while also being catchy. I think I will do something similar for my blog as well. Thanks for the nice blog share.

Kegels exercises for men us

5/11/2010 2:53:31 PM

Tom

Nice post guys, I really wanted to find something like this today. Most of the other blogs have such poor information that I was wondering if I was going to find anything at all today.

Tom us

5/11/2010 2:53:32 PM

Tom

Nice useful share this blog is. Pardon my english but where to look like blog like this. I want same deisgn and look.

Tom us

5/22/2010 5:15:14 PM

cheap hosting

Your blog is my favorite, congratulates

cheap hosting

5/25/2010 6:52:12 PM

male enhancement

your blog deserves an appreciative comment because it is very interesting to read. it delivers the message sweetly and quickly and was very useful for me.

male enhancement us

5/27/2010 11:56:26 PM

discount designer handbags sale

This is just the information I am finding everywhere. Thanks for your blog, I just subscribe your blog. This is a nice blog.

discount designer handbags sale US

7/15/2010 1:56:23 AM

online payday loans

Get a good idea and stay with it. Do it, and work at it until it's done right.

online payday loans us

7/22/2010 10:10:32 AM

wallets brand

You got fantastic nice ideas there. I made a research on the topic and got most peoples will agree with your blog. All you have to do is spend some time on the Internet to find stores that offer the items you are most interested in, so start browsing today!

wallets brand US

Add comment


(Will show your Gravatar icon)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Live preview

9/4/2010 11:12:19 AM

 

Yazar Hakkýnda

Erçin YONTAR
Erçin Yontar
1986 yýlýnda Çorlu'da doðdu.Ýlk öðrenimini Ankara'da, ortaöðrenimini Eskiþehir'de gördü.
Çanakkale 18 Mart Üniversitesi Bilgisayar Mühendisliði Bölümü mezunu.
Yazýlým ile çok ilgili; Visual Studiosu daima açýk :) bunun sayesinde Imagine Cup 2008 Türkiye 3.sü ve bir çok proje geliþtiriyor.
Yazýlým dýþýnda : Frp hastasý, rock/metal dinliyor, organizasyon iþlerine merak sardý. Bunlarýn yanýnda o bir; 
MCTS (Microsoft Certified Technology Specialist)



MSP (Microsoft Student Partner)

Bana posta atýn Send mail

Favorilerine Ekle


Add to Technorati Favorites

 

Twitter - Ne Yapýyorum?

    Pages

      Recent comments

      Feragatname

      Burada yazan yazýlar ve içerdikleri fikirler yazarýna aittir. Baþkasýný ilgilendirmez. Yazýlarý kaynaðýný kopyaladýðýnýz yazýnýn içinde týklanabilir link halinde belirtmek þartý ile olduðu gibi kullanabilirsiniz. Bu kurallarý deðiþtirme hakkým saklýdýr. Yarýn bir gün benim yazým benim blogumdan baþka bir yerde olamaz dersem Kopyaladýðýnýz yazýyý da silmek zorundasýnýz. Bu iþe girþen kiþi bu koþullarý ve doðan yasal yükümlülükleri kabul etmiþ sayýlýr. Eyvallah diyen devam etsin.

      © Tüm haklarý saklýdýr.

      Giriþ