本文整理汇总了C++中VertexBuffer::AddVertexAttribute方法的典型用法代码示例。如果您正苦于以下问题:C++ VertexBuffer::AddVertexAttribute方法的具体用法?C++ VertexBuffer::AddVertexAttribute怎么用?C++ VertexBuffer::AddVertexAttribute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VertexBuffer
的用法示例。
在下文中一共展示了VertexBuffer::AddVertexAttribute方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
VertexBuffer *SRPWindows::CreateVertexBuffer(const Vector2 &vPosition, const Vector2 &vImageSize)
{
// lets create a vertex buffer
VertexBuffer *pVertexBuffer = m_pCurrentRenderer->CreateVertexBuffer();
if (pVertexBuffer)
{
// setup and allocate the vertex buffer
pVertexBuffer->AddVertexAttribute(VertexBuffer::Position, 0, VertexBuffer::Float2);
pVertexBuffer->AddVertexAttribute(VertexBuffer::TexCoord, 0, VertexBuffer::Float2);
pVertexBuffer->Allocate(4, Usage::WriteOnly);
// fill the vertex buffer
UpdateVertexBuffer(pVertexBuffer, vPosition, vImageSize);
// return the created vertex buffer
return pVertexBuffer;
}
else
{
// something when wrong so we return nothing
return nullptr;
}
}
示例2:
//[-------------------------------------------------------]
//[ Private virtual MeshCreator functions ]
//[-------------------------------------------------------]
Mesh *MeshCreatorCube::Create(Mesh &cMesh, uint32 nLODLevel, bool bStatic) const
{
// Call base implementation
MeshCreator::Create(cMesh, nLODLevel, bStatic);
// Get dimension and offset
const Vector3 &vDimension = Dimension.Get();
const Vector3 &vOffset = Offset.Get();
// Get morph target
MeshMorphTarget *pMorphTarget = cMesh.GetMorphTarget(0);
if (pMorphTarget && pMorphTarget->GetVertexBuffer()) {
VertexBuffer *pVertexBuffer = pMorphTarget->GetVertexBuffer();
if (TexCoords || Normals) {
// Allocate data
pVertexBuffer->AddVertexAttribute(VertexBuffer::Position, 0, VertexBuffer::Float3);
if (TexCoords)
pVertexBuffer->AddVertexAttribute(VertexBuffer::TexCoord, 0, VertexBuffer::Float2);
if (Normals)
pVertexBuffer->AddVertexAttribute(VertexBuffer::Normal, 0, VertexBuffer::Float3);
pVertexBuffer->Allocate(24, bStatic ? Usage::Static : Usage::Dynamic);
if (pVertexBuffer->Lock(Lock::WriteOnly)) { // Setup vertices
// x-positive (0)
// 0
float *pfVertices = static_cast<float*>(pVertexBuffer->GetData(0, VertexBuffer::Position));
pfVertices[Vector3::X] = vDimension.x + vOffset.x;
pfVertices[Vector3::Y] = vDimension.y + vOffset.y;
pfVertices[Vector3::Z] = -vDimension.z + vOffset.z;
// 1
pfVertices = static_cast<float*>(pVertexBuffer->GetData(1, VertexBuffer::Position));
pfVertices[Vector3::X] = vDimension.x + vOffset.x;
pfVertices[Vector3::Y] = vDimension.y + vOffset.y;
pfVertices[Vector3::Z] = vDimension.z + vOffset.z;
// 2
pfVertices = static_cast<float*>(pVertexBuffer->GetData(2, VertexBuffer::Position));
pfVertices[Vector3::X] = vDimension.x + vOffset.x;
pfVertices[Vector3::Y] = -vDimension.y + vOffset.y;
pfVertices[Vector3::Z] = vDimension.z + vOffset.z;
// 3
pfVertices = static_cast<float*>(pVertexBuffer->GetData(3, VertexBuffer::Position));
pfVertices[Vector3::X] = vDimension.x + vOffset.x;
pfVertices[Vector3::Y] = -vDimension.y + vOffset.y;
pfVertices[Vector3::Z] = -vDimension.z + vOffset.z;
// x-negative (1)
// 4
pfVertices = static_cast<float*>(pVertexBuffer->GetData(4, VertexBuffer::Position));
pfVertices[Vector3::X] = -vDimension.x + vOffset.x;
pfVertices[Vector3::Y] = vDimension.y + vOffset.y;
pfVertices[Vector3::Z] = vDimension.z + vOffset.z;
// 5
pfVertices = static_cast<float*>(pVertexBuffer->GetData(5, VertexBuffer::Position));
pfVertices[Vector3::X] = -vDimension.x + vOffset.x;
pfVertices[Vector3::Y] = vDimension.y + vOffset.y;
pfVertices[Vector3::Z] = -vDimension.z + vOffset.z;
// 6
pfVertices = static_cast<float*>(pVertexBuffer->GetData(6, VertexBuffer::Position));
pfVertices[Vector3::X] = -vDimension.x + vOffset.x;
pfVertices[Vector3::Y] = -vDimension.y + vOffset.y;
pfVertices[Vector3::Z] = -vDimension.z + vOffset.z;
// 7
pfVertices = static_cast<float*>(pVertexBuffer->GetData(7, VertexBuffer::Position));
pfVertices[Vector3::X] = -vDimension.x + vOffset.x;
pfVertices[Vector3::Y] = -vDimension.y + vOffset.y;
pfVertices[Vector3::Z] = vDimension.z + vOffset.z;
// y-positive (2)
// 8
pfVertices = static_cast<float*>(pVertexBuffer->GetData(8, VertexBuffer::Position));
pfVertices[Vector3::X] = vDimension.x + vOffset.x;
pfVertices[Vector3::Y] = vDimension.y + vOffset.y;
pfVertices[Vector3::Z] = -vDimension.z + vOffset.z;
// 9
pfVertices = static_cast<float*>(pVertexBuffer->GetData(9, VertexBuffer::Position));
pfVertices[Vector3::X] = -vDimension.x + vOffset.x;
pfVertices[Vector3::Y] = vDimension.y + vOffset.y;
pfVertices[Vector3::Z] = -vDimension.z + vOffset.z;
// 10
pfVertices = static_cast<float*>(pVertexBuffer->GetData(10, VertexBuffer::Position));
pfVertices[Vector3::X] = -vDimension.x + vOffset.x;
pfVertices[Vector3::Y] = vDimension.y + vOffset.y;
pfVertices[Vector3::Z] = vDimension.z + vOffset.z;
// 11
pfVertices = static_cast<float*>(pVertexBuffer->GetData(11, VertexBuffer::Position));
pfVertices[Vector3::X] = vDimension.x + vOffset.x;
pfVertices[Vector3::Y] = vDimension.y + vOffset.y;
pfVertices[Vector3::Z] = vDimension.z + vOffset.z;
//.........这里部分代码省略.........