NiMesh
are the array of NiDataStreamRef objects that contain all varying attributes of
the mesh (vertices, indices, etc)
Element - An element is an array of data
that supplies a single input variable (varying or
uniform) to a shader program. Each stream
element defines a format and an offset where a particular element may be found
for a given stream. Multiple elements may be interleaved(插入)
into a single stream.
這邊指的是因為我們的NiDataStream是一連串的資料,假設有十組頂點資料,每組內的資料包含了當前的頂點位置,法向量,貼圖座標,前面這三項我們稱為Element。
Region A Region defines a contiguous
subset of a stream. The elements must be the same across all regions in a
stream. Every region contains the following data:
-the
base offset into each stream
-the
active number of elements for the Region
Region指的就是data stream內的某部分資料範圍
Mesh裡面是很多個data stream ref所組成的。
似乎一個mesh裡可以用好多個,不過我想通常剛好分成各個Sematic各一個stream。應該很少會有相同的Sematic的data stream。不過看起來好像可以多個相同的Semantic data stream。可能主要是共用頂點資料八。但是一個mesh裡只可以有一個USAGE_VERTEX_INDEX 用途的stream
Semantic就是送到Shader內,他要知道目前送來的資料是頂點位置,法向量,還是貼圖座標,這個information就是Semantic。
Semantic index:指的像是TEXCOORDINATE0, 1, 2, 3這種暫存器的index
用NiDataStream的CreateDataStream,然後就可以丟NiDataStreamElementSets就可以了。
NiDataStreamElement是Describes
an element of a NiDataStream object, by data type, format, and offset.
NiDataStreamElementLock是用來可以從指定的Mesh取得某一個特定的semantic的資料,並且可以用來抓到mesh內sub-mesh的某特定semantic資料的起始位置和結束位置。所以要注意它是已經被綁定的。
NiDataStreamPrimitiveLock是用來可以從指定的Mesh取得某一個特定的primitive的資料index資料,像是Line或Triangle這種,都是Primitive。
那Element的話應該可以指定單一某種Semantic的資料全都抓出來的樣子。而Primitive是以Primitive來分,所以Primitive可能會有POSITION
and COLOR的資料都有。
NiTStridedRandomAccessIterator
就是用來抓element內的資料的。
Semantic - The elements must
be the same across all regions in a stream
NiDataStreamRef是用來記錄一個data stream裡面資料代表什麼資料的範圍,及語意,NiDataStreamRef可以多個對一個data stream。
NiDataStreamElement::Type 資料型態int
or something
NiDataStreamElement::Format 資料擺放格式,可能是xyzw,或者zyxw這種擺放格式。
沒有留言:
張貼留言