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


C++ VertexBufferPtr::unlock方法代码示例

本文整理汇总了C++中VertexBufferPtr::unlock方法的典型用法代码示例。如果您正苦于以下问题:C++ VertexBufferPtr::unlock方法的具体用法?C++ VertexBufferPtr::unlock怎么用?C++ VertexBufferPtr::unlock使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在VertexBufferPtr的用法示例。


在下文中一共展示了VertexBufferPtr::unlock方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: updateGeometryData

	//-------------------------------------------------------------------------------//
	void OverlayPanelElement::updateGeometryData()
	{
		/*
			0-----2
			|    /|
			|  /  |
			|/    |
			1-----3
		*/
		Renderer* renderer = Root::getSingleton().getActiveRenderer();
		float offsetLeft = mLeft + renderer->getHorizontalTexelOffset() / OverlayMgr::getSingleton().getViewportWidth();
		float offsetTop = mTop + renderer->getVerticalTexelOffset() / OverlayMgr::getSingleton().getViewportHeight();
		float left, right, top, bottom;
		left = offsetLeft * 2 - 1;
		right = left + mWidth * 2;
		top = -((offsetTop * 2) - 1);
		bottom = top - mHeight * 2;

		VertexBufferPtr vbuf = mRenderData.vertexData->vertexBufferBinding->getBuffer(0);

		float* pPos = static_cast<float*>(vbuf->lock(HardwareBuffer::HBL_DISCARD));

		float zValue = Root::getSingleton().getActiveRenderer()->getMaxDepthValue();
		*pPos++ = left;
		*pPos++ = top;
		*pPos++ = zValue;

		*pPos++ = left;
		*pPos++ = bottom;
		*pPos++ = zValue;

		*pPos++ = right;
		*pPos++ = top;
		*pPos++ = zValue;

		*pPos++ = right;
		*pPos++ = bottom;
		*pPos++ = zValue;

		vbuf->unlock();

		
	}
开发者ID:cty41,项目名称:Titan,代码行数:44,代码来源:TiOverlayPanelElement.cpp

示例2: updateTexData

	//-------------------------------------------------------------------------------//
	void OverlayPanelElement::updateTexData()
	{
		if(!mTexture.isNull() &&mIsInitialised)
		{
			VertexDeclaration* decl = mRenderData.vertexData->vertexDecl;
			if(mTexCoordNum == 0)
			{
				decl->addElement(1, 0,VET_FLOAT2, VES_TEXTURE_COORDINATES, 0);

				VertexBufferPtr vbuf = HardwareBufferMgr::getSingletonPtr()->createVertexBuffer(decl->getVertexSize(1), mRenderData.vertexData->vertexCount,
					HardwareBuffer::HBU_STATIC_WRITE_ONLY, false);

				mRenderData.vertexData->vertexBufferBinding->setBinding(1,vbuf);
				mTexCoordNum = 1;
			}

			if(mTexCoordNum)
			{
				VertexBufferPtr buf = mRenderData.vertexData->vertexBufferBinding->getBuffer(1);
				float* pVBStart = static_cast<float*>(buf->lock(HardwareBuffer::HBL_DISCARD));

				size_t uvSize = VertexElement::getTypeSize(VET_FLOAT2) / sizeof(float);
				size_t vertexSize = decl->getVertexSize(1) / sizeof(float);
				
				float* pTex = pVBStart;

				pTex[0] = mU1;	pTex[1] = mV1;
				pTex += vertexSize;

				pTex[0] = mU1;	pTex[1] = mV2;
				pTex += vertexSize;
				
				pTex[0] = mU2;	pTex[1] = mV1;
				pTex += vertexSize;

				pTex[0] = mU2;	pTex[1] = mV2;

				buf->unlock();
			}
			
		}
	}
开发者ID:cty41,项目名称:Titan,代码行数:43,代码来源:TiOverlayPanelElement.cpp


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