コード例 #1
0
ファイル: COpenGLDemo.cpp プロジェクト: moose3d/demoframework
void
COpenGLDemo::RenderScene()
{
  PreRender();
  Render();
  PostRender();
}
コード例 #2
0
ファイル: Cylinder.cpp プロジェクト: neilforrest/protohaptic
void CCylinder::drawGLScene()
{

	PreRender();
	glPushMatrix();

	glTranslatef(m_locationX,
				 m_locationY,
				 m_locationZ);

	glMultMatrixf(m_rotation);
	glTranslatef(0.0,0.0,(float)(-m_sizeZ/2.0));
	glScalef(m_sizeX, m_sizeY, m_sizeZ);

	glColor3f(m_colourRed,
			  m_colourGreen,
			  m_colourBlue);

	//if ( touching() )
	//{
	//	glColor3f(0,
	//			  1,
	//			  0);
	//}

	int stacks= ((CProtoHapticApp*)AfxGetApp())->getStacks();

	gluCylinder(s, 0.5*m_ratio,0.5,1, stacks, stacks);
	gluDisk(d1,0.0,0.5*m_ratio,stacks,stacks);
	glTranslated(0.0,0.0,1);
	gluDisk(d2,0.0,0.5,stacks,stacks);

	glPopMatrix();
}
コード例 #3
0
void SpriteWrapper::Render(Vector2<int> aPosition)
{
	if(mySprite!=NULL)
	{
		PreRender();
		mySprite->Render(static_cast<float>(aPosition.myX), static_cast<float>(aPosition.myY));
	}
}
コード例 #4
0
ファイル: KCore.cpp プロジェクト: serialkk/hlsurvivor
bool KCore::GameRender()
{
	PreRender();
		Render();
		m_Timer.Render();	
		I_Input.Render();
		DrawDebug();
	PostRender();
	return true;
}
コード例 #5
0
ファイル: scythe.cpp プロジェクト: vermagav/mechmod
void CScythe::RenderScythe( void )
{
	if( m_pTex )
	{
		PreRender( );
	
		DrawScythe( );

		PostRender( );
	}
}
コード例 #6
0
void CShockWaveEffect::Render()
{
	if(!PreRender())
	{
		return;
	}
	
	if (GetOwner() != NULL)
	{ // HIDDEN 속성의 NPC의 이펙트를 보기 위해서는 캐릭터가 ENF_SHOWHIDDEN을 가지고 있어야 한다.
		if (GetOwner()->IsFlagOn(ENF_HIDDEN) && (CEntity::GetPlayerEntity(0)->IsFlagOff(ENF_SHOWHIDDEN) ||
			(CEntity::GetPlayerEntity(0)->IsFlagOn(ENF_SHOWHIDDEN)&&!GetOwner()->IsEnemy())))//ENF_SHOWHIDDEN이면 npc effect는 볼 수 있다.
			return;
	}

	gfxSetBlendType(m_eBlendType);
	if(m_ptdTexture != NULL)
	{
		gfxSetTextureUnit(0);
		m_ptdTexture->SetAsCurrent();
		if(RM_AreHardwareShadersAvailable())
		{
			gfxSetVertexProgram( m_ulVertexProgramTex );
			gfxSetPixelProgram( m_ulPixelProgramTex );
		}
		else
		{
			gfxSetTextureModulation(1);
		}
	}
	else
	{
		if(RM_AreHardwareShadersAvailable())
		{
			gfxSetVertexProgram( m_ulVertexProgramNoTex );
			gfxSetPixelProgram( m_ulPixelProgramNoTex );
		}
		else
		{
			//gfxSetTextureSelectArg(0, GFX_TA_DIFFUSE, GFX_TA_DIFFUSE);
		}
	}

	gfxSetVertexArray( &m_vectorGFXVertex[0], m_vectorGFXVertex.size() );
	gfxSetColorArray( &m_vectorGFXColor[0] );
	if(m_ptdTexture != NULL) gfxSetTexCoordArray( &m_vectorTexCoord[0], FALSE );
	gfxDrawElements( m_iSplitCount * 2 * 3, &m_vectorIndex[0]);

	if(!RM_AreHardwareShadersAvailable())
	{
		//gfxSetTextureSelectArg(0, GFX_TA_TEXTURE, GFX_TA_TEXTURE);
		gfxSetTextureModulation(1);
	}
	PostRender();
}
コード例 #7
0
ファイル: psys_part.cpp プロジェクト: vermagav/mechmod
bool CParticleSystem::RenderSystem( void )
{
	// heres where we loop through the system and render it
	if( TestSystem( ) )
	{
		// if test works update it
		UpdateSystem( );

		//now we loop thorugh the parts in the system and render them
		Particle_s *pPart = m_pHeadPart;
		
		int iCount = 0;

		PreRender( );
		while( pPart )
		{
			// first we need to test if the particle should still be living
			Particle_s *pTmp = pPart->pNext;
			if( TestPart( pPart ) )
			{
				UpdatePart( pPart );
				if( TestVisability( pPart ) )
				{
				// then we should update the particle	
					// now draw it
					RenderPart( pPart );
					iCount ++;
				}
			}
			else
			{
				// test show no need for particle remove it
				ReturnToPool( pPart );	
			}
			//move to the next part
			pPart = pTmp;
		}
		// turn it off
		PostRender( );
	//	if( iCount >= 5000 )
		/*{
			gEngfuncs.Con_Printf( "Parts: %i\n", iCount );
		}*/
	}
	else
	{
		//we can break out system doesnt need to be around any more
		return false;
	}

	//every thing was successfull
	return true;
}
コード例 #8
0
ファイル: ColorGrid.cpp プロジェクト: KAndQ/AEPlugins
DllExport 
PF_Err 
EntryPointFunc (	
	PF_Cmd				cmd,
	PF_InData			*in_data,
	PF_OutData			*out_data,
	PF_ParamDef			*params[],
	PF_LayerDef			*output,
	void				*extra)
{
	PF_Err		err = PF_Err_NONE;
	
	try {
		switch (cmd) {

		case PF_Cmd_ABOUT:
			err = About(in_data, out_data, params, output);
			break;

		case PF_Cmd_GLOBAL_SETUP:
			err = GlobalSetup(	in_data, out_data, params, output);
			break;

		case PF_Cmd_PARAMS_SETUP:
			err = ParamsSetup(	in_data, out_data, params, output);
			break;

		case PF_Cmd_RENDER:
			err = Render(	in_data, out_data, params, output);
			break;

		case PF_Cmd_EVENT:
			err = HandleEvent(	in_data, out_data, params, output, reinterpret_cast<PF_EventExtra*>(extra));
			break;

		case PF_Cmd_ARBITRARY_CALLBACK:
			err = HandleArbitrary(	in_data, out_data, params, output, reinterpret_cast<PF_ArbParamsExtra*>(extra));
			break;
			
		case  PF_Cmd_SMART_PRE_RENDER:
			err = PreRender(in_data, out_data, reinterpret_cast<PF_PreRenderExtra*>(extra));
			break;

		case  PF_Cmd_SMART_RENDER:
			err = SmartRender(	in_data, out_data, reinterpret_cast<PF_SmartRenderExtra*>(extra));
			break;
		}
	} catch (PF_Err &thrown_err) {
		err = thrown_err;
	}
	return err;
}
コード例 #9
0
ファイル: pl3DPipeline.cpp プロジェクト: H-uru/Plasma
void pl3DPipeline::Draw(plDrawable* d)
{
    plDrawableSpans *ds = plDrawableSpans::ConvertNoRef(d);

    if (ds)
    {
        if (( ds->GetType() & fView.GetDrawableTypeMask()) == 0)
            return;

        static hsTArray<int16_t>visList;

        PreRender(ds, visList);
        PrepForRender(ds, visList);
        Render(ds, visList);
    }
}
コード例 #10
0
ファイル: scene.cpp プロジェクト: BGCX261/zlmtank-svn-to-git
bool scene::RenderFunc(float d)
{
    PreRender(d);
    OBJ_LSIT_ITR itr = m_obj_list.begin();
    for (; itr != m_obj_list.end();itr++)
    {
        (*itr)->RenderFunc(d);
    }

    GUIAPP_LSIT_ITR itr_gui = m_guiapp_list.begin();
    for (; itr_gui != m_guiapp_list.end();itr_gui++)
    {
        (*itr_gui)->RenderFunc(d);
    }
    PostRender(d);
    return TRUE;
}
コード例 #11
0
ファイル: effect.cpp プロジェクト: Alriightyman/RTS
void EFFECT_FIREBALL::Render()
{
	PreRender();

	if(billboardMesh)
	{
		D3DXVECTOR3 orgRot = m_t1.m_rot;
		D3DXVECTOR3 rotations[] = {D3DXVECTOR3(0.0f, 0.0f, 0.0f),
								   D3DXVECTOR3(D3DX_PI * 0.5f, 0.0f, 0.0f),
								   D3DXVECTOR3(0.0f, D3DX_PI * 0.5f, 0.0f),
								   D3DXVECTOR3(0.0f, 0.0f, D3DX_PI * 0.5f)};

		D3DXVECTOR3 orgPos = m_t1.m_pos;
		D3DXVECTOR3 positions[] = {m_t1.m_pos, 
								   GetPosition(m_prc - (1.5f / m_length)),
								   GetPosition(m_prc - (2.5f / m_length)),
								   GetPosition(m_prc - (3.25f / m_length)),
								   GetPosition(m_prc - (4.0f / m_length))};

		D3DXVECTOR3 orgSca = m_t1.m_sca;
		D3DXVECTOR3 scales[] = {m_t1.m_sca, 
							    m_t1.m_sca * 0.8f,
								m_t1.m_sca * 0.6f,
								m_t1.m_sca * 0.4f,
							    m_t1.m_sca * 0.2f};
	
		m_pDevice->SetTexture(0, fireballTexture);
		for(int t=0;t<5;t++)
			for(int i=0;i<4;i++)
			{
				m_t1.m_pos = positions[t];
				m_t1.m_rot = orgRot + rotations[i];
				m_t1.m_sca = scales[t];

				effectVertexShader.SetMatrix(effectMatW, m_t1.GetWorldMatrix());
				billboardMesh->DrawSubset(0);
			}

		m_t1.m_pos = orgPos;
		m_t1.m_rot = orgRot;
		m_t1.m_sca = orgSca;
	}

	PostRender();
}
コード例 #12
0
//----------------------------------------------------------------------------
void AllegroRender::Render()  {
    // Pre-Render
    PreRender();

    // Clear screen
    al_clear_to_color(al_map_rgb_f(0, 0, 0));

    // Render
    sceneManager->Render();

    // TODO: remove me...
    //al_draw_text(font, al_map_rgba_f(1, 1, 1, 0.5), 0, 0, 0, text);

    // Display frame
    FlipDoubleBuffer();

    // Post Render
	PostRender();
}
コード例 #13
0
ファイル: FTTextureFont.cpp プロジェクト: JackFan-Z/ftgles
inline FTPoint FTTextureFontImpl::RenderI(const T* string, const int len,
                                          FTPoint position, FTPoint spacing,
                                          int renderMode)
{
	disableTexture2D = false;
	disableBlend = false;
	FTPoint tmp;
	
	if (preRendered)
	{
		tmp = FTFontImpl::Render(string, len, position, spacing, renderMode);
	}
	else 
	{
		PreRender();
		tmp = FTFontImpl::Render(string, len, position, spacing, renderMode);
		PostRender();
	}
    return tmp;
}
コード例 #14
0
ファイル: effect.cpp プロジェクト: Alriightyman/RTS
void EFFECT_SPELL::Render()
{
	PreRender();

	if(billboardMesh)
	{
		//Spinning quad
		m_pDevice->SetTexture(0, runesTexture);
		effectVertexShader.SetMatrix(effectMatW, m_t1.GetWorldMatrix());
		billboardMesh->DrawSubset(0);

		//Cloud
		m_pDevice->SetTexture(0, cloudTexture);
		for(int i=0;i<10;i++)
		{
			effectVertexShader.SetMatrix(effectMatW, m_c[i].GetWorldMatrix());
			billboardMesh->DrawSubset(0);
		}
	}

	PostRender();
}
コード例 #15
0
ファイル: MeshRenderer.hpp プロジェクト: yushroom/RFGL
    //protected:
    virtual void Render() const override {
        //Debug::Log("Rendere %s", m_gameObject->name().c_str());
        auto meshFilter = m_gameObject->GetComponent<MeshFilter>();
        if (meshFilter == nullptr) {
            Debug::LogWarning("This GameObject has no MeshFilter");
            return;
        }
        
        auto model = transform()->localToWorldMatrix();
        auto camera = Scene::mainCamera();
        auto view = camera->worldToCameraMatrix();
        auto proj = camera->projectionMatrix();
        auto mv = view * model;
        auto mvp = proj * mv;

        ShaderUniforms uniforms;
        //std::map<std::string, Matrix4x4> matrices;
        uniforms.mat4s["_Object2World"] = model;
        uniforms.mat4s["MATRIX_V"] = view;
        uniforms.mat4s["MATRIX_P"] = proj;
        uniforms.mat4s["MATRIX_VP"] = proj * view;
        uniforms.mat4s["MATRIX_MVP"] = mvp;
        uniforms.mat4s["MATRIX_MV"] = mv;
        uniforms.mat4s["MATRIX_IT_M"] = glm::inverse(glm::transpose(model));
        uniforms.mat4s["MATRIX_IT_MV"] = glm::inverse(glm::transpose(mv));
        //auto camera = Scene::getMainCamera();
        uniforms.vec3s["_WorldSpaceCameraPos"] = camera->transform()->position();
        
        for (auto& m : m_materials) {
            auto shader = m->shader();
            shader->Use();
            shader->PreRender();
            shader->BindUniforms(uniforms);
            m->Update();
            shader->CheckStatus();
            meshFilter->mesh()->Render();
            shader->PostRender();
        }
    }
コード例 #16
0
ファイル: Torus.cpp プロジェクト: neilforrest/protohaptic
void CTorus::drawGLScene()
{
	PreRender();
	glPushMatrix();

	glTranslatef(m_locationX,
				 m_locationY,
				 m_locationZ);

	glMultMatrixf(m_rotation);
	
	glScalef(m_sizeX, m_sizeY, m_sizeZ );

	glColor3f(m_colourRed,
			  m_colourGreen,
			  m_colourBlue);

	int stacks= ((CProtoHapticApp*)AfxGetApp())->getStacks();

	doughnut ( m_radiusMinor, m_radiusMajor, stacks, stacks, m_drawnFraction );

	glPopMatrix();
}
コード例 #17
0
void idRenderWindow::Draw(int time, float x, float y) {
	PreRender();
	Render(time);

	memset( &refdef, 0, sizeof( refdef ) );
	refdef.vieworg = viewOffset.ToVec3();;
	//refdef.vieworg.Set(-128, 0, 0);

	refdef.viewaxis.Identity();
	refdef.shaderParms[0] = 1;
	refdef.shaderParms[1] = 1;
	refdef.shaderParms[2] = 1;
	refdef.shaderParms[3] = 1;

	refdef.x = drawRect.x;
	refdef.y = drawRect.y;
	refdef.width = drawRect.w;
	refdef.height = drawRect.h;
	refdef.fov_x = 90;
	refdef.fov_y = 2 * atan((float)drawRect.h / drawRect.w) * idMath::M_RAD2DEG;

	refdef.time = time;
	world->RenderScene(&refdef);
}
コード例 #18
0
ファイル: lightningfx.cpp プロジェクト: emoose/lithtech
bool CLightningFX::Update(float tmFrameTime)
{
	// Base class update first
	
	if (!CBaseFX::Update(tmFrameTime)) 
		return false;

	
	if( !IsShuttingDown() )
	{
		EmitBolts( tmFrameTime );		
	}

	// Check to see if any bolts have expired...

	CLightningBolt *pBolt = LTNULL;
	LightningBolts::iterator iter;
	for( iter = m_lstBolts.begin(); iter != m_lstBolts.end(); ++iter )
	{
		pBolt = *iter;

		//adjust our start time
		pBolt->m_tmElapsed += tmFrameTime;

		if( pBolt->m_fLifetime < pBolt->m_tmElapsed )
			pBolt->m_bActive = false;
	}

	// Setup the bolts for rendering

	PreRender( tmFrameTime );

	// Success !!

	return true;
}
コード例 #19
0
void SpriteWrapper::Render(Vector2<float> aPosition, const float aRotation, const float anXScale, const float anYScale)
{
	PreRender();
	mySprite->RenderEx(aPosition.myX, aPosition.myY, aRotation, anXScale, anYScale);
}
コード例 #20
0
ファイル: GBoneObj.cpp プロジェクト: serialkk/cudgel
bool GBoneObj::Render(ID3D11DeviceContext*    pContext)
{	
	PreRender(pContext);
	Draw(pContext, this);
	return true;
}
コード例 #21
0
ファイル: render-thread.cpp プロジェクト: mettalla/dali
bool RenderThread::Run()
{
  DALI_LOG_INFO( gRenderLogFilter, Debug::Verbose, "RenderThread::Run\n");

  // Install a function for logging
  mEnvironmentOptions.InstallLogFunction();

  InitializeEgl();

  Dali::Integration::RenderStatus renderStatus;
  RenderRequest* request = NULL;

  // Render loop, we stay inside here when rendering
  while( mThreadSynchronization.RenderReady( request ) )
  {
    DALI_LOG_INFO( gRenderLogFilter, Debug::Verbose, "RenderThread::Run. 1 - RenderReady\n");

    // Consume any pending events to avoid memory leaks
    DALI_LOG_INFO( gRenderLogFilter, Debug::Verbose, "RenderThread::Run. 2 - ConsumeEvents\n");
    mDisplayConnection->ConsumeEvents();

    // Check if we've got a request from the main thread (e.g. replace surface)
    if( request )
    {
      // Process the request, we should NOT render when we have a request
      DALI_LOG_INFO( gRenderLogFilter, Debug::Verbose, "RenderThread::Run. 3 - Process requests\n");
      ProcessRequest( request );
    }
    else
    {
      // No request to process so we render
      if( PreRender() ) // Returns false if no surface onto which to render
      {
        // Render
        DALI_LOG_INFO( gRenderLogFilter, Debug::Verbose, "RenderThread::Run. 3 - Core.Render()\n");

        mThreadSynchronization.AddPerformanceMarker( PerformanceInterface::RENDER_START );
        mCore.Render( renderStatus );
        mThreadSynchronization.AddPerformanceMarker( PerformanceInterface::RENDER_END );

        // Decrement the count of how far update is ahead of render
        mThreadSynchronization.RenderFinished();

        // Perform any post-render operations
        if ( renderStatus.HasRendered() )
        {
          DALI_LOG_INFO( gRenderLogFilter, Debug::Verbose, "RenderThread::Run. 4 - PostRender()\n");
          PostRender();
        }
      }
    }

    request = NULL; // Clear the request if it was set, no need to release memory
  }

  // Shut down EGL
  ShutdownEgl();

  // Uninstall the logging function
  mEnvironmentOptions.UnInstallLogFunction();

  return true;
}
コード例 #22
0
ファイル: GraphiceEngine.cpp プロジェクト: viticm/pap2
HRESULT KGraphicsEngine::InitializeWindowed(HWND hBaseWindow, HWND hRenderWindow)
{
	// Create the D3D object.
    if ( NULL == ( g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ) ) )
	{
		MessageBox(hBaseWindow,"Failed Create the D3D object!.","Failed Create the D3D object!",0);
        return E_FAIL;
	}
    // Get the current desktop display mode, so we can set up a back
    // buffer of the same format
	g_pD3D->GetDeviceCaps(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,&g_D3DCaps);

    if ( FAILED( g_pD3D->GetAdapterDisplayMode( D3DADAPTER_DEFAULT, &m_DisplayMode ) ) )
	{
		MessageBox(hBaseWindow,"Failed GetAdapterDisplayMode !.","Failed Create the D3D object!",0);
		return E_FAIL;
	}
     
    // Set up the structure used to create the D3DDevice
	D3DFORMAT  DepFormat;
	if (SUCCEEDED(g_pD3D->CheckDepthStencilMatch(D3DADAPTER_DEFAULT,
		D3DDEVTYPE_HAL,
		m_DisplayMode.Format,
		m_DisplayMode.Format,
		D3DFMT_D24S8)))
	{
		DepFormat = D3DFMT_D24S8;
	}
	else
	{
		DepFormat = D3DFMT_D16;
	}

    memset( &m_PresentParam, 0, sizeof(D3DPRESENT_PARAMETERS) );

    memset(&m_RenderWindowRect, 0, sizeof(m_RenderWindowRect));	

	if(hRenderWindow)
		::GetWindowRect(hRenderWindow,&m_RenderWindowRect);
	else
	{
		::GetWindowRect(hBaseWindow,&m_RenderWindowRect);
		hRenderWindow = hBaseWindow;
	}
		
	//m_PresentParam.BackBufferWidth = m_RenderWindowRect.right-m_RenderWindowRect.left ;
    //m_PresentParam.BackBufferHeight= m_RenderWindowRect.bottom - m_RenderWindowRect.top;
	m_PresentParam.BackBufferWidth = m_DisplayMode.Width ;
	m_PresentParam.BackBufferHeight= m_DisplayMode.Height;

    m_PresentParam.Windowed = TRUE ;
    m_PresentParam.SwapEffect = D3DSWAPEFFECT_DISCARD;
    m_PresentParam.BackBufferFormat = m_DisplayMode.Format;
	m_PresentParam.EnableAutoDepthStencil = TRUE;
    m_PresentParam.AutoDepthStencilFormat = DepFormat;
    m_PresentParam.MultiSampleType = D3DMULTISAMPLE_NONE;
    m_PresentParam.hDeviceWindow = hBaseWindow;
    m_PresentParam.Flags = 0;
    m_PresentParam.FullScreen_RefreshRateInHz = 0;
    m_PresentParam.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;

	//just set camera's aspect
	m_cCamera.Aspect = m_PresentParam.BackBufferWidth*1.0f/m_PresentParam.BackBufferHeight; 

	HRESULT hr;

	// Set default settings
	UINT AdapterToUse=D3DADAPTER_DEFAULT;
	D3DDEVTYPE DeviceType=D3DDEVTYPE_HAL;
//#if SHIPPING_VERSION
	// When building a shipping version, disable NVPerfHUD (opt-out)
//#else
	// Look for 'NVIDIA NVPerfHUD' adapter
	// If it is present, override default settings
	for (UINT Adapter=0;Adapter<g_pD3D->GetAdapterCount();Adapter++)
	{
		D3DADAPTER_IDENTIFIER9 Identifier;
		HRESULT Res=g_pD3D->GetAdapterIdentifier(Adapter,0,&Identifier);
		if (strcmp(Identifier.Description,"NVIDIA NVPerfHUD")==0)
		{
			AdapterToUse=Adapter;
			DeviceType=D3DDEVTYPE_REF;
			break;
		}
	}
//#endif

    // Create the D3DDevice
    /*if ( FAILED(hr = g_pD3D->CreateDevice( AdapterToUse, DeviceType, hBaseWindow,
                                      D3DCREATE_HARDWARE_VERTEXPROCESSING,
                                      &m_PresentParam, &g_pd3dDevice ) ) )
    {*/
		if ( FAILED(hr = g_pD3D->CreateDevice( AdapterToUse, DeviceType, hBaseWindow,
                                      D3DCREATE_MIXED_VERTEXPROCESSING,
                                      &m_PresentParam, &g_pd3dDevice ) ) )
		{
			if ( FAILED(hr = g_pD3D->CreateDevice( AdapterToUse, DeviceType, hBaseWindow,
                                      D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                      &m_PresentParam, &g_pd3dDevice ) ) )
			{
				
				if (hr == D3DERR_INVALIDCALL)
					MessageBox(hBaseWindow,"The method call is invalid. For example, a method's parameter may have an invalid value.","Failed Create Device!",0);
				else if (hr == E_OUTOFMEMORY )
					MessageBox(hBaseWindow,"Direct3D could not allocate sufficient memory to complete the call.","Failed Create Device!",0);
				else if (hr == D3DERR_OUTOFVIDEOMEMORY)
					MessageBox(hBaseWindow,"Direct3D does not have enough display memory to perform the operation. ","Failed Create Device!",0);
				return E_FAIL;
			}
		}
	
  /*  }*/
    
//	D3DMULTISAMPLE_TYPE Mul = D3DMULTISAMPLE_4_SAMPLES;
//
//	if( FAILED(g_pD3D->CheckDeviceMultiSampleType( D3DADAPTER_DEFAULT, 
//			D3DDEVTYPE_HAL, m_PresentParam.BackBufferFormat, 
//			FALSE, Mul, NULL ) ) &&
//			SUCCEEDED(g_pD3D->CheckDeviceMultiSampleType( D3DADAPTER_DEFAULT, 
//			D3DDEVTYPE_HAL, m_PresentParam.AutoDepthStencilFormat, 
//			FALSE, Mul, NULL ) ) )
//	{
//		Mul = D3DMULTISAMPLE_3_SAMPLES; 
//
//		if( FAILED(g_pD3D->CheckDeviceMultiSampleType( D3DADAPTER_DEFAULT, 
//			D3DDEVTYPE_HAL, m_PresentParam.BackBufferFormat, 
//			FALSE, Mul, NULL ) ) &&
//			SUCCEEDED(g_pD3D->CheckDeviceMultiSampleType( D3DADAPTER_DEFAULT, 
//			D3DDEVTYPE_HAL, m_PresentParam.AutoDepthStencilFormat, 
//			FALSE, Mul, NULL ) ) )
//		{
//			Mul = D3DMULTISAMPLE_2_SAMPLES; 
//
//			if( FAILED(g_pD3D->CheckDeviceMultiSampleType( D3DADAPTER_DEFAULT, 
//				D3DDEVTYPE_HAL, m_PresentParam.BackBufferFormat, 
//				FALSE, Mul, NULL ) ) &&
//				SUCCEEDED(g_pD3D->CheckDeviceMultiSampleType( D3DADAPTER_DEFAULT, 
//				D3DDEVTYPE_HAL, m_PresentParam.AutoDepthStencilFormat, 
//				FALSE, Mul, NULL ) ) )
//			{
//				Mul = D3DMULTISAMPLE_NONE; 
//			}
//		}
//	}
//	if (Mul != D3DMULTISAMPLE_NONE)
//	{
//		m_PresentParam.MultiSampleType = Mul;
//		g_pd3dDevice->Reset( &m_PresentParam );
//	}
    
    // Device state would normally be set here
	// Turn off culling, so we see the front and back of the triangle
     g_pd3dDevice->SetRenderState( D3DRS_CULLMODE, D3DCULL_CW  );

    // Turn off D3D lighting, since we are providing our own vertex colors

    // Turn on the zbuffer
    g_pd3dDevice->SetRenderState( D3DRS_ZENABLE, TRUE );
    //g_pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE , TRUE );
    g_pd3dDevice->SetRenderState( D3DRS_ZFUNC, D3DCMP_LESSEQUAL  );

	g_cGraphicsTool.SetCurCamera(&m_cCamera);
	
	PreRender(); 
	m_bWindowed = TRUE;
    
	if (m_bUseMotionBlur)
	{
		BackBufferCreate();
		
		g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER|D3DCLEAR_STENCIL,
			0xff666666, 1.0f, 0 );
	}

	return S_OK;
}
コード例 #23
0
void SpriteWrapper::Render(Vector2<float> aPosition)
{
	PreRender();
	mySprite->Render(aPosition.myX, aPosition.myY);
}
コード例 #24
0
ファイル: GDxHelperEx.cpp プロジェクト: serialkk/cudgel
	bool TDxObject::Render(ID3D11DeviceContext*    pContext, UINT iVertexSize, UINT iCount)
	{			
		PreRender(pContext, iVertexSize);
		PostRender(pContext, iCount);
		return true;
	}	
コード例 #25
0
ファイル: SplitImage4.cpp プロジェクト: AlexUlrich/digsby
//Draw each piece to the DC
void SplitImage4::Render(wxDC* dc, const int &w, const int &h, const int& x, const int& y, const bool& center){

#ifdef SPLIT_IMAGE_DEBUG
    linen=0;
#endif

    // Prepping variables
    int edge, ox, oy, width, height;
    int widthl = 0, widthr = 0, heightt = 0, heightb = 0;

    // if the size of the render is less than the splitimage's minsize
    bool underw = w < MinSize.GetWidth();
    bool underh = h < MinSize.GetHeight();

    //if undersized figure out the sizes based on ratio
    if (underw)
    {
        widthl = (int)((float)w * (float)ratio[0]);
        widthr = (int)((float)w * (float)ratio[1]);
        if ( w-(widthl+widthr) )widthr += (w-(widthl+widthr));
    }

    if (underh)
    {
        heightt = (int)((float)h * (float)ratio[2]);
        heightb = (int)((float)h * (float)ratio[3]);
        if ( h-(heightt+heightb) )heightb += (h-(heightt+heightb));
    }

    // create a memory DC for the blits
    wxMemoryDC pmdc;

    // create an array of pointers to the coreners for iterating
    wxImage* c[] = {splitimage.c1, splitimage.c2, splitimage.c3, splitimage.c4};

    // stamp each corner in place if it exists
    for (int i=0; i < 4; ++i)
    {
        if (c[i])
        {
            width  = underw? (i==0||i==2? widthl:widthr) : (c[i]->GetWidth());
            height = underh? (i==0||i==1? heightt:heightb) : (c[i]->GetHeight());
            ox = i == 0 || i == 2 ? 0 : w - width;
            oy = i < 2 ? 0 : h - height;

            if (width < 1 || height < 1)
                continue;

            //dc->DrawBitmap(wxBitmap(c[i]->Scale(width,height)),ox+x,oy+y,true);
            wxBitmap bmp = wxBitmap(c[i]->Scale(width,height));
            pmdc.SelectObject(bmp);
            dc->Blit(ox+x,oy+y,width,height,&pmdc,0,0, wxCOPY, true);
        }
    }
    //calculate the position and size of each edge and the center then prerender and stamp in place
    int rwidth = 0, bheight = 0;
    if(splitimage.top/* && !underw*/)
    {
        edge= splitimage.c2? w-splitimage.c2->GetWidth() : w;
        width= edge-splitimage.top->pos.x;
        height= underh? heightt: max(1,splitimage.top->image.GetHeight());
        PreRender(dc,*splitimage.top,splitimage.top->pos.x+x,splitimage.top->pos.y+y,width,height);
    }

    if(splitimage.bottom/* && !underw*/)
    {
        edge= splitimage.c4?w-splitimage.c4->GetWidth():w;
        width= edge-splitimage.bottom->pos.x;
        bheight = height= underh? heightb: splitimage.bottom->image.GetHeight();
        PreRender(dc,*splitimage.bottom,splitimage.bottom->pos.x+x,h-height+y,width,height);
    }

    if(splitimage.left/* && !underh*/)
    {
        edge= splitimage.c3?h-splitimage.c3->GetHeight():h;
        width= underw? widthl: splitimage.left->image.GetWidth();
        height= edge-splitimage.left->pos.y;
        PreRender(dc,*splitimage.left,splitimage.left->pos.x+x,splitimage.left->pos.y+y,width,height);
    }

    if(splitimage.right/* && !underh*/)
    {
        edge= splitimage.c4?h-splitimage.c4->GetHeight():h;
        rwidth =width= underw? widthr: splitimage.right->image.GetWidth();
        height= edge-splitimage.right->pos.y;
        PreRender(dc,*splitimage.right,w-width+x,splitimage.right->pos.y+y,width,height);
    }

    if(splitimage.center && center)
    {
        width= splitimage.right?w-rwidth-splitimage.center->pos.x:w-splitimage.center->pos.x;
        height= splitimage.bottom? h-bheight-splitimage.center->pos.y : h-splitimage.center->pos.y;
        PreRender(dc,*splitimage.center,splitimage.center->pos.x+x,splitimage.center->pos.y+y,width,height);
    }

    //Release the bitmap in the memory DC
    pmdc.SelectObject(wxNullBitmap);
}
コード例 #26
0
LRESULT CALLBACK C3DCoordinateAxisMain::WndProc(HWND hWnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
    TCHAR log[256]= {0,};
    //std::string info;
    HDC hdc;
    PAINTSTRUCT ps;
    //POINT pt;
    switch(iMsg)
    {
    case WM_TIMER:
        Update();
        return 0;
    case WM_LBUTTONDOWN:
    {
        POINT pt = {LOWORD(lParam), HIWORD(lParam)};
        if( m_clickCnt < CLICK_MAX )
        {
            m_clickVecPt[m_clickCnt].x = pt.x - WIN_WIDTH/2;
            m_clickVecPt[m_clickCnt].y = WIN_HEIGHT/2 - pt.y;
            m_clickVecPt[m_clickCnt].z = 0;


            m_clickCnt++;
            if(m_clickCnt == CLICK_MAX)
            {
                VECTOR tempVec[2];
                for (UINT i = 0 ; i < m_clickCnt ; i++ )
                {
                    D3DVecNormalize( &tempVec[i], &m_clickVecPt[i]);
                }
                //cos0
                float cos = D3DVecDot( &tempVec[0], &tempVec[1] );

                //각도로 변경
                degree = acosf(cos)*180/PI;

                //외적
                D3DVecCross(&m_crossVec, &tempVec[0], &tempVec[1]);
                D3DVecNormalize( &m_crossVec, &m_crossVec );
            }
        }

    }
    return 0;
    case WM_RBUTTONDOWN:
        if(m_clickCnt > 0)
        {
            m_clickCnt--;
        }
        return 0;
    case WM_PAINT:
    {
        hdc = BeginPaint(hWnd,&ps);
        PreRender(hdc);
        Render(m_hMemDc);
        PostRender(hdc);
        EndPaint(hWnd,&ps);
    }
    return 0;
    case WM_KEYDOWN:
        switch(wParam)
        {
        case VK_ESCAPE:
            PostQuitMessage(0);
            UnregisterTimer();
            break;
        }
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        UnregisterTimer();
        return 0;
    }
    return DefWindowProc(hWnd, iMsg, wParam, lParam);
}