Ejemplo n.º 1
0
void FEdModeGeometry::Render(const FSceneView* View,FViewport* Viewport,FPrimitiveDrawInterface* PDI)
{
	FEdMode::Render(View,Viewport,PDI);

	RenderVertex( View, PDI );
	RenderEdge( View, PDI );
	RenderPoly( View, Viewport, PDI );
}
int DrawEffekseer2D_Begin()
{
	if (g_manager2d == nullptr) return -1;
	
	// 頂点バッファに溜まった頂点データを吐き出す。
	RenderVertex();

	// 歪みの処理を行う
	if (g_isDistortionEnabled)
	{
		Effekseer_Distort();
	}

	// エフェクトの描画開始処理を行う。
	g_renderer2d->BeginRendering();
	
	return 0;
}
Ejemplo n.º 3
0
void Texture::Draw(const Vertex &bottomLeft, const Vertex &topRight)
{
	Render &r = Render::GetInstance();

	r.BindTexture(_texid);

	r.Triangle(
		RenderVertex(bottomLeft, RenderUV(0, 1)),
		RenderVertex(topRight, RenderUV(1, 0)),
		RenderVertex(Vertex(bottomLeft.x(), topRight.y()), RenderUV(0, 0)));

	r.Triangle(
		RenderVertex(topRight, RenderUV(1, 0)),
		RenderVertex(bottomLeft, RenderUV(0, 1)),
		RenderVertex(Vertex(topRight.x(), bottomLeft.y()), RenderUV(1, 1)));
}
int DrawEffekseer2D()
{
	if (g_manager2d == nullptr) return -1;
	
	// 頂点バッファに溜まった頂点データを吐き出す。
	RenderVertex();

	// 歪みの処理を行う
	if (g_isDistortionEnabled)
	{
		Effekseer_Distort();
	}

	// エフェクトの描画開始処理を行う。
	g_renderer2d->BeginRendering();

	// エフェクトの描画を行う。
	g_manager2d->DrawBack();

	if (g_isDistortionEnabled)
	{
		g_renderer2d->EndRendering();

		Effekseer_Distort();

		g_renderer2d->BeginRendering();
	}

	g_manager2d->DrawFront();

	// エフェクトの描画終了処理を行う。
	g_renderer2d->EndRendering();

	// DXライブラリの設定を戻す。
	RefreshDxLibDirect3DSetting();

	return 0;
}
Ejemplo n.º 5
0
//--------------------------------------------------------------
// Name:			CGEOMIPMAPPING::RenderFan - private
// Description:		Update the geomipmapping system
// Arguments:		-cX, cZ: center of the triangle fan to render
//					-fSize: half of the fan's entire size
//					-neightbor: the fan's neighbor structure (used to avoid cracking)
//					-bMultitex: use multitexturing or not
//					-bDetail: render with a detail map or not
// Return Value:	None
//--------------------------------------------------------------
void CGEOMIPMAPPING::RenderFan( float cX, float cZ, float fSize, SGEOMM_NEIGHBOR neighbor, bool bMultiTex, bool bDetail )
{
	float fTexLeft, fTexBottom, fMidX, fMidZ, fTexRight, fTexTop;
	float fHalfSize= fSize/2.0f;

	//calculate the texture coordinates if we're not doing multitexturing, but still detail mapping
	if( bDetail && !bMultiTex )
	{
		//calculate the texture coordinates
		fTexLeft  = ( ( float )fabs( cX-fHalfSize )/m_iSize )*m_iRepeatDetailMap;
		fTexBottom= ( ( float )fabs( cZ-fHalfSize )/m_iSize )*m_iRepeatDetailMap;
		fTexRight = ( ( float )fabs( cX+fHalfSize )/m_iSize )*m_iRepeatDetailMap;
		fTexTop	  = ( ( float )fabs( cZ+fHalfSize )/m_iSize )*m_iRepeatDetailMap;

		fMidX= ( ( fTexLeft+fTexRight )/2 );
		fMidZ= ( ( fTexBottom+fTexTop )/2 );
	}

	//calculate the texture coordinates otherwise
	else
	{
		//calculate the texture coordinates
		fTexLeft  = ( ( float )fabs( cX-fHalfSize )/m_iSize );
		fTexBottom= ( ( float )fabs( cZ-fHalfSize )/m_iSize );
		fTexRight = ( ( float )fabs( cX+fHalfSize )/m_iSize );
		fTexTop	  = ( ( float )fabs( cZ+fHalfSize )/m_iSize );

		fMidX= ( ( fTexLeft+fTexRight )/2 );
		fMidZ= ( ( fTexBottom+fTexTop )/2 );
	}


	//begin a new triangle strip
	glBegin( GL_TRIANGLE_FAN );
		//render the CENTER vertex
		RenderVertex( cX, cZ, fMidX, fMidZ, bMultiTex );

		//render the LOWER-LEFT vertex
		RenderVertex( cX-fHalfSize, cZ-fHalfSize, fTexLeft, fTexBottom, bMultiTex );		

		//only render the next vertex if the left patch is NOT of a lower LOD
		if( neighbor.m_bLeft )
		{
			RenderVertex( cX-fHalfSize, cZ, fTexLeft, fMidZ, bMultiTex );
			m_iTrisPerFrame++;
		}
	
		//render the UPPER-LEFT vertex
		RenderVertex( cX-fHalfSize, cZ+fHalfSize, fTexLeft, fTexTop, bMultiTex );
		m_iTrisPerFrame++;

		//only render the next vertex if the upper patch is NOT of a lower LOD
		if( neighbor.m_bUp )
		{
			RenderVertex( cX, cZ+fHalfSize, fMidX, fTexTop, bMultiTex );
			m_iTrisPerFrame++;
		}

		//render the UPPER-RIGHT vertex
		RenderVertex( cX+fHalfSize, cZ+fHalfSize, fTexRight, fTexTop, bMultiTex );
		m_iTrisPerFrame++;

		//only render the next vertex if the right patch is NOT of a lower LOD
		if( neighbor.m_bRight )
		{
			//render the MID-RIGHT vertex
			RenderVertex( cX+fHalfSize, cZ, fTexRight, fMidZ, bMultiTex );
			m_iTrisPerFrame++;
		}

		//render the LOWER-RIGHT vertex
		RenderVertex( cX+fHalfSize, cZ-fHalfSize, fTexRight, fTexBottom, bMultiTex );
		m_iTrisPerFrame++;	

		//only render the next vertex if the bottom patch is NOT of a lower LOD
		if( neighbor.m_bDown )
		{
			//render the LOWER-MID vertex
			RenderVertex( cX, cZ-fHalfSize, fMidX, fTexBottom, bMultiTex );	
			m_iTrisPerFrame++;
		}

		//render the LOWER-LEFT vertex
		RenderVertex( cX-fHalfSize, cZ-fHalfSize, fTexLeft, fTexBottom, bMultiTex );
		m_iTrisPerFrame++;	

	//end the triangle strip
	glEnd( );
}