Paket | flash.display3D |
Sınıf | public class VertexBuffer3D |
Miras Alma | VertexBuffer3D Object |
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 11, AIR 3 |
Bir dizi köşedeki her nokta ile ilişkili verileri tanımlamak için VertexBuffer3D nesnesini kullanın. Köşe verilerini bir Vektör dizisinden veya bir ByteArray öğesinden yükleyebilirsiniz. (Yüklendikten sonra, orijinal dizideki verilere artık başvurulmaz. Kaynak diziyi değiştirmek veya kaldırmak köşe verilerini değiştirmez.)
Her köşe ile ilişkili veriler uygulama tanımlı bir biçimdedir ve köşe gölgelendirici programı için girdi olarak kullanılır. Context3D setVertexBufferAt()
işlevini kullanarak hangi değerlerin hangi köşe programı girdisine ait olduğunu belirleyin. Bir köşe programı en fazla sekiz girdi (köşe nitelik kayıtları olarak da bilinir) kullanabilir. Her girdi bir ila dört adet 32 bitlik değer gerektirir. Örneğin, bir köşenin [x,y,z] konum koordinatları; üç adet 32 bitlik değer içeren bir vektör olarak köşe programına iletilebilir. Context3DVertexBufferFormat sınıfı, gölgeleyici girdilerinde desteklenen biçimler için sabitler tanımlar. Her nokta için en fazla altmış dört adet 32 bitlik değer (256 bayt) sağlayabilirsiniz (ancak böyle bir durumda tek bir köşe gölgelendirici verilerin tümünü kullanamaz).
Ayrıca setVertexBufferAt()
işlevi, sonraki tüm drawTriangles()
çağrılarını oluşturmak için hangi köşe arabelleğinin kullanılacağını belirler. Farklı bir köşe arabelleğinden veri oluşturmak için setVertexBufferAt()
öğesini uygun argümanlarla tekrar çağırın. (Birden fazla köşe arabelleğinde aynı noktalar için veri saklayabilir; bir arabellekte konum verilerini, diğerindeyse doku koordinatlarını belirleyebilirsiniz ancak bir nokta için verilerin tamamı tek bir arabellekten geliyorsa oluşturma genellikle daha kullanışlıdır.)
Context3D drawTriangles()
yöntemine iletilen Index3DBuffer nesnesi köşe verilerini üçgenlere dağıtır. Dizin arabelleğindeki her değer, köşe arabelleğindeki bir köşeye ait dizindir. Üç dizinden oluşan bir dizi sırayla bir üçgeni tanımlar.
Bir VertexBuffer3D nesnesini doğrudan oluşturamazsınız. Bunun yerine Context3D createVertexBuffer()
yöntemini kullanın.
Köşe arabelleğiyle ilişkili oluşturma bağlamı kaynaklarını boşaltmak için nesnenin dispose()
yöntemini çağırın.
İlgili API Öğeleri
Yöntem | Tanımlayan: | ||
---|---|---|---|
Bu nesneyle ilişkili tüm kaynakları boşaltır. | VertexBuffer3D | ||
Bir nesnenin belirli bir özelliğinin tanımlı olup olmadığını gösterir. | Object | ||
Object sınıfının bir örneğinin parametre olarak belirtilen nesnenin prototip zincirinde olup olmadığını gösterir. | Object | ||
Belirtilen özelliğin bulunup bulunmadığını ve numaralandırılabilir olup olmadığını gösterir. | Object | ||
Dinamik bir özelliğin döngü işlemlerinde kullanılabilirliğini ayarlar. | Object | ||
Bu nesnenin, yerel ayara özel kurallara göre biçimlendirilmiş dize temsilini döndürür. | Object | ||
Belirtilen nesnenin dize olarak temsil edilen halini döndürür. | Object | ||
Bir dizi noktaya ait verileri, bayt dizisinden oluşturma bağlamına yükler. | VertexBuffer3D | ||
Bir dizi noktaya ait verileri, vektör dizisinden oluşturma bağlamına yükler. | VertexBuffer3D | ||
Belirtilen nesnenin temel değerini döndürür. | Object |
dispose | () | yöntem |
public function dispose():void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 11, AIR 3 |
Bu nesneyle ilişkili tüm kaynakları boşaltır. Bir köşe arabelleğini attıktan sonra bu nesneyi kullanarak yapılan upload() çağrısı ve oluşturma işlemi başarısız olur.
uploadFromByteArray | () | yöntem |
public function uploadFromByteArray(data:ByteArray, byteArrayOffset:int, startVertex:int, numVertices:int):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 11, AIR 3 |
Bir dizi noktaya ait verileri, bayt dizisinden oluşturma bağlamına yükler.
Parametreler
data:ByteArray — köşe verilerini içeren bir bayt dizisi. Her veri değeri dört bayt uzunluğundadır. Bir köşedeki değer sayısı, arabellek oluşturma işlemi sırasında Context3D createVertexBuffer3D() öğesi için data32PerVertex parametresi kullanılarak belirtilir. Verilerin bayt olarak uzunluğu, byteArrayOffset artı köşe başına değer sayısının dört katı çarpı köşe noktası sayısı olmalıdır. ByteArray nesnesi, little endian biçimini kullanmalıdır.
| |
byteArrayOffset:int — verilerin başından itibaren atlanacak bayt sayısı
| |
startVertex:int — Yüklenecek ilk köşenin dizini. Köşe verisinin alt bölgesini yüklemek için startVertex öğesinin sıfıra eşit olmayan bir değeri kullanılabilir.
| |
numVertices:int — data öğesinden yüklenecek köşe noktası sayısı.
|
Atar
TypeError — Boş İşaretçi Hatası: data null olduğunda.
| |
RangeError — Hatalı Giriş Boyutu: byteArrayOffset değeri 0'dan küçükse veya byteArrayOffset değeri data uzunluğu ile eşit veya daha büyükse ya da data - byteArrayOffset içindeki öğe sayısı Context3D::createVertexBuffer() içinde verilen numVertices *data32pervertex *4 değerinden küçükse.
| |
Error — 3768: Stage3D API, arka planda çalışma sırasında kullanılmayabilir.
|
uploadFromVector | () | yöntem |
public function uploadFromVector(data:Vector.<Number>, startVertex:int, numVertices:int):void
Dil Sürümü: | ActionScript 3.0 |
Çalışma Zamanı Sürümleri: | Flash Player 11, AIR 3 |
Bir dizi noktaya ait verileri, vektör dizisinden oluşturma bağlamına yükler.
Parametreler
data:Vector.<Number> — 32 bitlik değere sahip bir vektör. Tek bir köşe bir vektörde sıralı olarak saklanan birkaç değerden oluşur. Bir köşedeki değer sayısı, arabellek oluşturma işlemi sırasında Context3D createVertexBuffer3D() öğesi için data32PerVertex parametresi kullanılarak belirtilir. Vektörün uzunluğu, köşe başına düşen değer sayısı çarpı köşe sayısı olmalıdır.
| |
startVertex:int — Yüklenecek ilk köşenin dizini. Köşe verisinin alt bölgesini yüklemek için startVertex öğesinin sıfıra eşit olmayan bir değeri kullanılabilir.
| |
numVertices:int — data tarafından temsil edilen köşe noktası sayısı.
|
Atar
TypeError — Boş İşaretçi Hatası: data null olduğunda.
| |
RangeError — Hatalı Giriş Boyutu: data içindeki öğe sayısı Context3D::createVertexBuffer() içinde verilen numVertices * data32PerVertex değerinden küçük olduğunda veya startVertex + numVertices değeri Context3D::createVertexBuffer() içinde verilen numVertices değerinden büyük olduğunda.
|
setVertexBufferAt()
yöntemini çağırır. Köşe programı, bu şekilde tanımlanan ve köşe nitelik kayıtları olarak da bilinen en fazla 8 girdi içerebilir.
const dataPerVertex:int = 6; var vertexData:Vector.<Number> = Vector.<Number>( [ // x, y, z r, g, b format 0, 0, 0, 1, 1, 1, -1, 1, 0, 0, 0,.5, 1, 1, 0, 0, 0, 1, 1,-1, 0, .5, 0, 0, -1,-1, 0, 1, 0, 0 ] ); var vertexes:VertexBuffer3D = renderContext.createVertexBuffer( vertexData.length/dataPerVertex, dataPerVertex ); vertexes.uploadFromVector( vertexData, 0, vertexData.length/dataPerVertex ); //Identify vertex data inputs for vertex program renderContext.setVertexBufferAt( 0, vertexes, 0, Context3DVertexBufferFormat.FLOAT_3 ); //Defines shader input va0 as the position data renderContext.setVertexBufferAt( 1, vertexes, 3, Context3DVertexBufferFormat.FLOAT_3 ); //Defines shader input va1 as the color data
Tue Jun 12 2018, 01:09 PM Z