Köşe Arabelleği – Analizi Yaptırma Fiyatları – Yazılım Analizi Örnekleri – Ücretli Analizi Yaptırma – Ücretli Yazılım Yaptırma
Köşe Arabelleği
Nokta, çizgi listesi, çizgi şeridi, üçgen listesi ve üçgen şeridi için gerçek köşe verileri oluşturuyoruz. Birden çok köşe arabelleği oluşturmak yerine, tüm bu köşeleri tek bir ara belleğe koyuyoruz ve farklı ilkelleri işlemek için ofset ve köşe sayımı kullanıyoruz. İlk adım, aşağıdaki kodu kullanarak bir köşe dizisi oluşturmaktır.
g_totalVertexNum global değişkeni, tüm ilkel öğeler için toplam köşe sayısını saklar. Köşe dizisindeki her bir ilkel türü için tepe numarasını ve başlangıç ofsetini saklamak için önceden tanımlanmış iki dizi kullanırız.
Ekranda hangi tür ilkellerin görüntüleneceğini belirtmek için başka bir global değişken olan g_currentPrimitiveTopo kullanıyoruz.
Örneğin, g_currentPrimitiveTopo 1’e eşitse, ekranda bir satır listesi görüntülemek için köşe dizisindeki 180. elemandan başlayarak 18 köşe kullanılacaktır. g_currentPrimitiveTopo 2’ye eşitse, köşe dizisindeki 198. öğeden başlayarak 19 köşe, ekranda bir çizgi şeridi görüntülemek için kullanılacaktır.
Kullanıcıların işleme için farklı ilkelleri seçmesine izin vermek için, sistem tarafından oluşturulan WndProc() yöntemini WM_KEYDOWN mesajını işleyecek şekilde değiştiriyoruz. Kullanıcılar klavyede boşluk tuşuna her bastığında, g_currentPrimitiveTopo’yu bir artırıyoruz ve geçerli çizim ilkel türünü ayarlamak için SetPrimitiveTopology()’yi çağırıyoruz.
Ayrıca, mevcut ilkel türüyle eşleşmesi için pencere başlığı dizesini de değiştiriyoruz. SetPrimitiveTopology() yöntemi, g_currentPrimitiveTopo’ya dayalı olarak geçerli çizim ilkel türünü ayarlamak için basit ve kullanışlı bir yöntemdir. Geçerli çizim türünü ayarlamak için ID3DDevice::IASetPrimitiveTopology() yöntemini çağırıyoruz.
Daha sonra, gerçek işlemeyi yapmak için RenderScene() yöntemini değiştiriyoruz. Tekniği açıklayan bir D3D10FX_TECHNIQUE_DESC yapısını almak için InitD3D10Device()’de elde edilen teknik nesnede ID3D10EffectTechnique::GetDesc()’i çağırarak başlıyoruz. Passes adlı üye, tekniğin içerdiği işleme geçişlerinin sayısını belirtir.
Bu tekniği kullanarak doğru bir şekilde işlemek için, tüm geçişlerden geçmeliyiz. Döngü içinde, geçerli geçiş nesnesini elde etmek için önce tekniğin GetPassByIndex() yöntemini çağırmalıyız, ardından ilişkili gölgelendiricileri bağlamak ve durumları grafik boru hattına işlemek için Apply() yöntemini çağırmalıyız.
ID3D10Device::Draw() yöntemi, GPU’ya geçerli köşe arabelleğini, köşe düzenini ve ilkel topolojiyi kullanarak işlemesi için komut verir. Draw()’daki ilk parametre, çizmek için kullanılan köşe sayısıdır ve ikinci parametre, çizilecek ilk köşenin indeksidir.
Boşluk çubuğuna bastığımızda, oluşturma noktaları, çizgiler ve üçgenler arasında geçiş yapacaktır. Üçgenleri işlemenin anlık görüntüsü.
Gölgelendiricileri Kullanan Animasyon
Bu örnekte, ilkel animasyonlar için gölgelendiriciler kullanıyoruz. Örnek01.fx efekt dosyasında shaderları aşağıdaki gibi yazıyoruz.
Efekt dosyaları, üst düzey gölgelendirme dili (HLSL) kullanılarak yazılır. Bu bölümde, efekt dosyalarımızın üç farklı bölümü vardır: global değişkenler, gölgelendiriciler ve teknikler. Tıpkı bir C programında olduğu gibi, önce dosyanın en üstünde, uygulamadan gölgelendiricilere değer göndermek için kullanılan global değişkenleri bildiririz.
Normalde bu değişkenler uygulama tarafından başlatılır ve ardından gölgelendiricilerde kullanılır. Genel değişkenler, bir C++ programındaki sabitlere ve değişkenlere benzer. Bu örnekte, bir genel değişken kullanıyoruz: g_time. Değişken, ilkel animasyon için kare süresini kaydetmek için kullanılır. Uygulama, her karede bu değişkenin değerini ayarlarken, gölgelendirici değeri ilkelleri canlandırmak için kullanacaktır.
Değişkene erişmek için InitD3D10Device() yönteminde bulunan ID3D10Effect::GetVariableByName() yöntemini çağırarak uygulamadaki değişkene bir arabirim elde ediyoruz.
Yöntem, değişken adı için bir dize parametresi kabul eder. Uygulamada, yöntemin döndürdüğü arabirimi tutmak için ID3D10EffectScalarVariable türünde bir işaretçi değişkeni g_pTimeVariable kullanıyoruz. Efekt dosyasında g_time global değişkenine erişim elde etmek için kullanılan kod aşağıdadır.
Efekt dosyasındaki g_time değişkeninin veri türü kayan noktalı bir sayıdır, bu nedenle arabirimi elde etmek için AsScalar() yöntemini çağırıyoruz. Gelecekteki örneklerde, efekt dosyasında vektör veya matris gibi başka türde değişkenlere sahip olmanın mümkün olduğunu göreceğiz. Bu tür değişkenlere erişmek için AsVector() veya AsMatrix() gibi karşılık gelen bir yöntem kullanmamız gerekir.
Valorant ara belleğe Alma ayarı
Valorant ağ arabelleği Nedir
OpenGL üçgen çizimi
VALORANT
Valorant ortalamanın üstünde ping
Dengesizlik göstergeleri nedir
Ağ ara Belleği Nedir
Valorant paket kaybı
Ayrıca, tıpkı C++ işlev kapsamı kuralları gibi, efekt dosyasındaki efekt işlevlerinin kapsamı dışında bildirilen değişkenler, efekt boyunca görünür; Bir efekt fonksiyonunun içinde beyan edilen değişkenler, yalnızca o fonksiyon içinde görünür.
Efektimizin ikinci kısmı, çalıştırılabilir küçük programlar olan gölgelendiricilerdir. Direct3D 10 işlem hattı, üç farklı türde gölgelendirici kullanır. Köşe gölgelendirici, her köşe girişinin bir köşe çıkışı verdiği köşe verileri üzerinde çalışır.
Bir geometri gölgelendirici, ilkel veriler üzerinde çalışır; her ilkel girdi sıfır, bir veya birçok çıktı ilkel üretebilir. Bir piksel gölgelendirici, piksel verileri üzerinde çalışır ve piksel ayıklanmadıkça her piksel girişi, bir piksel çıktısı üretir. Gölgelendiriciler, C stili işlev kurallarına göre yerel işlevler olarak yazılır.
Bu örnekte, yalnızca köşe ve piksel gölgelendiricileri kullanıyoruz. Köşe gölgelendiricide, animasyon için köşe x ve y koordinatlarını değiştiririz. Köşe koordinatlarına bağlı olarak köşe rengini de hesaplıyoruz. Ardından, piksel gölgelendirici işlemesi için köşe gölgelendirici çıktısı (köşe konumları ve renkler) enterpole edilir. Bu örnekte, piksel gölgelendirici çıktısı basitçe enterpolasyonlu piksel rengidir.
Vertex shader çıktısını pixel shader’a geçirmek için vertex shader çıkış yapısını tanımlarız. Yapı, konum ve renk için iki alana sahiptir. Bu alanların her ikisi de 4 elemanlı kayan nokta vektörleridir.
Example01.fx’te, bir işleme geçişleri koleksiyonu içeren RenderScene adlı bir teknik tanımlıyoruz. RenderScene tekniğinin kodu aşağıda listelenmiştir.
Yukarıdaki kodda, Direct3D’ye köşe ve piksel gölgelendiricilerini derlemesini söylüyoruz. Burada geometri gölgelendirici kullanmadığımız için, geometri gölgelendirici için işlem hattına basitçe bir NULL geçiriyoruz. Artık Example01.exe’yi çalıştırabilir ve animasyonlu konumlar ve renklerle ekranda işlenen farklı ilkelleri görebiliriz.
Piksel Aydınlatma
Bu örnekte piksel aydınlatmanın nasıl uygulanacağını tartışıyoruz. Piksel gölgelendiricideki her piksel için ışık bileşenlerini hesaplıyoruz. Köşe aydınlatması ile karşılaştırıldığında, piksel aydınlatması daha yumuşak ve daha gerçekçi bir gölgeleme efekti sağlar.
Aydınlatma efektini göstermek için üç ışık kaynağı ve bir küp kullanıyoruz. Küp, merkezi etrafında döner ve ışık kaynakları küpün etrafında döner. Işık kaynakları, tek renkli küpler olarak işlenir. Üç küçük küpü ışık kaynağı olarak çizmek için ortadaki küpü dönüştürüyor ve ölçeklendiriyoruz.
Bu örnekte uygulanan aydınlatma efektleri, yönlü ışık, aynalı yönlü ışık, nokta ışığı, aynalı nokta ışığı, spot ışığı, aynalı spot ışığı ve yarım küre aydınlatmasıdır. Önceki örneğe benzer şekilde, kullanıcılar klavyedeki boşluk tuşuna basarak farklı aydınlatma efektleri seçebilirler.
Ağ ara Belleği Nedir Dengesizlik göstergeleri nedir OpenGL üçgen çizimi VALORANT Valorant ağ arabelleği Nedir Valorant ara belleğe Alma ayarı Valorant ortalamanın üstünde ping Valorant paket kaybı