private void OnIdle(object sender, EventArgs e) { m_RenderApi.identityMatrix(eMatrixMode.MATRIXMODE_World); m_RenderApi.begin(0.0f, 0.0f, 0.2f, 1.0f, 1.0f, 0); m_RenderApi.beginScene(); m_RenderApi.applyCamera(m_3DCamera); m_RenderApi.setBlendState(m_DefBlender); xDepthStencilState depStencil = new xDepthStencilState(); m_RenderApi.setDepthStencilState(depStencil); m_RenderApi.GpuShader = m_pModelShader; //xVector3 min = new xVector3(); //xVector3 max = new xVector3(); //m_model.BoundBox(min, max); //xVector3 len = new xVector3(max.x - min.x, max.y - min.y, max.z - min.z); //xVector3 cen = new xVector3(0.5f * max.x + 0.5f * min.x, 0.5f * max.y + 0.5f * min.y, 0.5f * max.z + 0.5f * min.z); //设置矩阵绘制场景 //xMatrix tranMat = new xMatrix(); //xMathlib.Transform(tranMat, -cen.x, -cen.y, -cen.z); //m_RenderApi.setMatrix(tranMat, eMatrixMode.MATRIXMODE_World); //m_scene.Draw(); int timePassed = 20; m_RenderApi.GpuShader = m_SkelShader; //单位矩阵绘制角色 m_RenderApi.identityMatrix(eMatrixMode.MATRIXMODE_World); m_model.update(timePassed); m_model.Draw(); xColorF cl = new xColorF(1.0f , 1.0f , 1.0f ,1.0f ); xMatrix mat = new xMatrix(); mat.identity(); m_RenderApi.setMatrix(mat, eMatrixMode.MATRIXMODE_World); //cl.r = 1.0f; cl.g = 1.0f; cl.b = 0.0f; cl.a = 1.0f; m_RenderApi.applyCamera(m_2DCamera); m_RenderApi.GpuShader = m_pRectShader; xVector destRect = new xVector(); destRect.left = 10; destRect.top = 400; destRect.width = 400; destRect.height = 300; m_RenderApi.setBlendState(m_DefBlender); m_RenderApi.set2DTexture( 1 , m_MaskTexture ); m_RenderApi.drawRectf(m_DiffuseTexture , destRect , cl); m_RenderApi.GpuShader = m_pRectBlankShader; m_Angle += 0.5f; destRect.left = 500; destRect.top = 10; destRect.width = 400; destRect.height = 300; xMatrix rotMat = new xMatrix(); xMathlib.RotateZ(rotMat, m_Angle); xMatrix xformMat = new xMatrix(); xMathlib.XForm_Trans(xformMat , rotMat , new xVector3( (destRect.left + destRect.width/2.0f) , (destRect.top + destRect.height/2.0f) , 0.0f ) ); m_RenderApi.setMatrix(xformMat,eMatrixMode.MATRIXMODE_World); //m_RenderApi.drawRectf(destRect, new xColorF(1.0f, 0.0f, 0.0f, 1.0f) ); m_RenderApi.identityMatrix(eMatrixMode.MATRIXMODE_World); m_RenderApi.findFont("default").drawText("Evolution3D 演示 D3D10",10,50,cl); m_RenderApi.endScene(); m_RenderApi.swapBuffer(); }
private void OnIdle(object sender, EventArgs e) { m_RenderApi.identityMatrix(eMatrixMode.MATRIXMODE_World); m_RenderApi.begin(0.0f, 0.0f, 0.2f, 1.0f, 1.0f, 0); m_RenderApi.beginScene(); m_RenderApi.applyCamera(m_3DCamera); m_RenderApi.setBlendState(m_DefBlender); xDepthStencilState depStencil = new xDepthStencilState(); m_RenderApi.setDepthStencilState(depStencil); m_RenderApi.GpuShader = m_pModelShader; //xVector3 min = new xVector3(); //xVector3 max = new xVector3(); //m_model.BoundBox(min, max); //xVector3 len = new xVector3(max.x - min.x, max.y - min.y, max.z - min.z); //xVector3 cen = new xVector3(0.5f * max.x + 0.5f * min.x, 0.5f * max.y + 0.5f * min.y, 0.5f * max.z + 0.5f * min.z); //设置矩阵绘制场景 //xMatrix tranMat = new xMatrix(); //xMathlib.Transform(tranMat, -cen.x, -cen.y, -cen.z); //m_RenderApi.setMatrix(tranMat, eMatrixMode.MATRIXMODE_World); //m_scene.Draw(); int timePassed = 20; m_RenderApi.GpuShader = m_SkelShader; //单位矩阵绘制角色 m_RenderApi.identityMatrix(eMatrixMode.MATRIXMODE_World); m_model.update(timePassed); m_model.Draw(); xColorF cl = new xColorF(1.0f, 1.0f, 1.0f, 1.0f); xMatrix mat = new xMatrix(); mat.identity(); m_RenderApi.setMatrix(mat, eMatrixMode.MATRIXMODE_World); //cl.r = 1.0f; cl.g = 1.0f; cl.b = 0.0f; cl.a = 1.0f; m_RenderApi.applyCamera(m_2DCamera); m_RenderApi.GpuShader = m_pRectShader; xVector destRect = new xVector(); destRect.left = 10; destRect.top = 400; destRect.width = 400; destRect.height = 300; m_RenderApi.setBlendState(m_DefBlender); m_RenderApi.set2DTexture(1, m_MaskTexture); m_RenderApi.drawRectf(m_DiffuseTexture, destRect, cl); m_RenderApi.GpuShader = m_pRectBlankShader; m_Angle += 0.5f; destRect.left = 500; destRect.top = 10; destRect.width = 400; destRect.height = 300; xMatrix rotMat = new xMatrix(); xMathlib.RotateZ(rotMat, m_Angle); xMatrix xformMat = new xMatrix(); xMathlib.XForm_Trans(xformMat, rotMat, new xVector3((destRect.left + destRect.width / 2.0f), (destRect.top + destRect.height / 2.0f), 0.0f)); m_RenderApi.setMatrix(xformMat, eMatrixMode.MATRIXMODE_World); //m_RenderApi.drawRectf(destRect, new xColorF(1.0f, 0.0f, 0.0f, 1.0f) ); m_RenderApi.identityMatrix(eMatrixMode.MATRIXMODE_World); m_RenderApi.findFont("default").drawText("Evolution3D 演示 D3D10", 10, 50, cl); m_RenderApi.endScene(); m_RenderApi.swapBuffer(); }