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


C++ TileMap::Render方法代码示例

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


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

示例1: Render

		void TiledBackground::Render()
		{
			glEnable(GL_BLEND);
			glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

			glPushMatrix();
			Camera *camera = m_viewCtrl->GetCamera();
			if(camera)
			{
				game2d::PhysicalObject *focus = camera->GetFocus();
				{
					Vector2<float> focusPosition = focus->GetPosition();
					Vector2<float> focusExtent = focus->GetExtent();

					Vector2<float> viewScale = m_viewCtrl->GetViewScale();
					Vector2<int> viewExtent = m_viewCtrl->GetExtent();

					glPushMatrix();
					Vector2<float> half((float)viewExtent[0] / 2.f, (float)viewExtent[1] / 2.f);
					Vector2<float> focusHalf = focusExtent / 2.f;
					glTranslatef(half[0] - viewScale[0] * focusPosition[0], half[1] - viewScale[1] * focusPosition[1], 0.f);
	//						glTranslatef(half[0] - m_viewScale[0] * (focusPosition[0] + focusHalf[0]), half[1] - m_viewScale[1] * (focusPosition[1] + focusHalf[1]), 0.f);
					glScalef(viewScale[0], viewScale[1], 1.f);

					float minX, minY, maxX, maxY;
					minX = ((focusPosition[0] + focusHalf[0]) - half[0] / viewScale[0]);
					minY = ((focusPosition[1] + focusHalf[1]) - half[1] / viewScale[1]);
					maxX = ((focusPosition[0] + focusHalf[0]) + half[0] / viewScale[0]);
					maxY = ((focusPosition[1] + focusHalf[1]) + half[1] / viewScale[1]);

					for(vector<pair<TileMap *, float> >::iterator it = m_tileMapVec.begin(); it != m_tileMapVec.end(); it++)
					{
						glPushMatrix();
						
						TileMap *tileMap = it->first;
						float scale = it->second;
						Vector2<unsigned short> tileSize = tileMap->GetTileSize();
						int _minX, _minY, _maxX, _maxY;
						_minX = (int)((minX / tileSize[0]) / scale) - 1;
						_maxX = (int)((maxX / tileSize[0]) / scale) + 1;
						_minY = (int)((minY / tileSize[1]) / scale) - 1;
						_maxY = (int)((maxY / tileSize[1]) / scale) + 1;						

						if(_minX < 0)
							_minX = 0;
						if(_minY < 0)
							_minY = 0;
						if(_maxX < 0)
							_maxX = 0;
						if(_maxY < 0)
							_maxY = 0;

						glScalef(scale, scale, 1.f);
						tileMap->Render(_minX, _minY, _maxX, _maxY);
						glPopMatrix();
					}

					glPopMatrix();
				}
			}
			glPopMatrix();

			glDisable(GL_BLEND);
		}
开发者ID:Boushi,项目名称:centhra-engine,代码行数:64,代码来源:TiledBackground.cpp


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