当前位置: 首页>>代码示例>>C++>>正文


C++ VertexBuffer::AddVertexAttribute方法代码示例

本文整理汇总了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;
	}
}
开发者ID:PixelLightCommunity,项目名称:Plugins,代码行数:23,代码来源:SRPWindow.cpp

示例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;

//.........这里部分代码省略.........
开发者ID:ByeDream,项目名称:pixellight,代码行数:101,代码来源:MeshCreatorCube.cpp


注:本文中的VertexBuffer::AddVertexAttribute方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。