void GoodsModelManager::SetupTransform() { render::Interface *pInterface = render::Interface::GetInstance(); render::Interface::Layer2D *pLayer2D = pInterface->GetLayer2D(); //保存原始的矩阵信息 pInterface->GetDevice()->GetTransform(D3DTS_WORLD,&m_matWorld); pInterface->GetDevice()->GetTransform(D3DTS_VIEW,&m_matView); pInterface->GetDevice()->GetTransform(D3DTS_PROJECTION,&m_matProject); pInterface->GetDevice()->GetViewport(&m_OldViewPort); D3DXMATRIX matWorld; D3DXMatrixIdentity(&matWorld); pInterface->GetDevice()->SetTransform(D3DTS_WORLD,&matWorld); pInterface->GetDevice()->SetTransform(D3DTS_VIEW,m_Camera->GetViewMatrix()); pInterface->GetDevice()->SetTransform(D3DTS_PROJECTION,m_Camera->GetProjectionMatrix()); ////清空指定的视区 int iWidth = pInterface->GetWndWidth(); int iHeight = pInterface->GetWndHeight(); int ixStart = iWidth * 3 /4; int iyStart = 0; int iViewWidth = iWidth-ixStart; int iViewHeight = iHeight / 4; SetViewPort(ixStart,iyStart,iViewWidth,iViewHeight);//窗口右上1/4区域大小 D3DRECT d3dRect; d3dRect.x1 = ixStart; d3dRect.y1 = iyStart; d3dRect.x2 = iWidth; d3dRect.y2 = iHeight/4; pInterface->GetDevice()->Clear(1,&d3dRect, D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER|( (pInterface->GetInfo()->d3dpp.AutoDepthStencilFormat == D3DFMT_D16) ? 0 : D3DCLEAR_STENCIL ) ,\ D3DCOLOR_ARGB(255,0,0,0), 1.0f, 0); }
int main(int argc, char** argv) { Screen screen(width, height); Model model; model.load("obj/african_head.obj"); // model.load("obj/reconstructed_head.obj"); std::cout << "Model loaded" << std::endl; std::cout << "nverts: " << model.nverts() << std::endl; std::cout << "nfaces: " << model.nfaces() << std::endl; Texture texture; texture.Load("obj/african_head_diffuse.tga"); Texture normal_map; normal_map.Load("obj/african_head_nm.tga"); Matrix44f projection = Matrix44f::Identity(); Matrix44f viewport = SetViewPort(width / 8, height / 8, width * 3 / 4, height * 3 / 4); Matrix44f modelview = LookAt(kEye, kCenter, kUp); TGAImage image(width, height, TGAImage::RGB); Shader shader(model, texture, normal_map, viewport * projection * modelview, projection * modelview); for (size_t f = 0; f < model.num_faces(); ++f) { auto clip_coords = shader.Vertex(f); screen.Triangle(clip_coords, shader); } screen.WriteTgaFile("output.tga"); return 0; }
bool CRenderSystemGLES::ResetRenderSystem(int width, int height, bool fullScreen, float refreshRate) { m_width = width; m_height = height; glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); CalculateMaxTexturesize(); CRect rect( 0, 0, width, height ); SetViewPort( rect ); glEnable(GL_SCISSOR_TEST); g_matrices.MatrixMode(MM_PROJECTION); g_matrices.LoadIdentity(); g_matrices.Ortho(0.0f, width-1, height-1, 0.0f, -1.0f, 1.0f); g_matrices.MatrixMode(MM_MODELVIEW); g_matrices.LoadIdentity(); glBlendFunc(GL_SRC_ALPHA, GL_ONE); glEnable(GL_BLEND); // Turn Blending On glDisable(GL_DEPTH_TEST); return true; }
bool CRenderSystemGLES::ResetRenderSystem(int width, int height) { m_width = width; m_height = height; glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); CalculateMaxTexturesize(); CRect rect( 0, 0, width, height ); SetViewPort( rect ); glEnable(GL_SCISSOR_TEST); glMatrixProject.Clear(); glMatrixProject->LoadIdentity(); glMatrixProject->Ortho(0.0f, width-1, height-1, 0.0f, -1.0f, 1.0f); glMatrixProject.Load(); glMatrixModview.Clear(); glMatrixModview->LoadIdentity(); glMatrixModview.Load(); glMatrixTexture.Clear(); glMatrixTexture->LoadIdentity(); glMatrixTexture.Load(); glBlendFunc(GL_SRC_ALPHA, GL_ONE); glEnable(GL_BLEND); // Turn Blending On glDisable(GL_DEPTH_TEST); return true; }
void GraphicsDevice::Initialize(void) { CreateDeviceAndSwapChain(); CreateRenderTarget(); SetViewPort(); m_pD3DDevice->OMSetRenderTargets(1, &m_pRenderTarget->GetRenderTargetView(), m_pRenderTarget->GetDepthStencilView() ); }
LUAMTA_FUNCTION(camera, SetViewPort) { auto self = my->ToCameraPtr(1); self->SetViewPort(my->ToNumber(1), my->ToNumber(2), my->ToNumber(3), my->ToNumber(4)); return 0; }
// Called before the first frame bool j1Render::Start() { LOG("render start"); // back background SDL_RenderGetViewport(renderer, &viewport); //NOTE: My camera cooling, very simple and works, buts ask ric about if this is cheating SetViewPort({ 0, 0, camera.w, camera.h }); return true; }
// 生成共通処理 void Camera::Create(D3DXVECTOR3 pos, D3DXVECTOR3 rota) { SetViewPort(0, 0, app->wnd->GetRectClient().right, app->wnd->GetRectClient().bottom); Camera::pos = pos; Camera::rota = rota; // 射影行列の初期化 D3DXMatrixIdentity(&m_projection); // 射影行列を作成 D3DXMatrixPerspectiveFovLH(&m_projection, D3DXToRadian(45.0f), aspect, 1.0f, 100000.0f); // 射影行列をパイプラインに設定 render->GetD3d()->SetTransform(D3DTS_PROJECTION, &m_projection); View(); }
bool UIDirect3D9View::InitialiseView(IDirect3DDevice9 *Device, const QRect &Rect) { m_viewport = QRect(0, 0, 1, 1); m_D3DXMatrixMultiply = (TORC_D3DXMATRIXMULTIPLY)UIDirect3D9Window::GetD3DX9ProcAddress("D3DXMatrixMultiply"); m_D3DXMatrixPerspectiveOffCenterLH = (TORC_D3DXMATRIXPERSPECTIVEOFFCENTERLH)UIDirect3D9Window::GetD3DX9ProcAddress("D3DXMatrixPerspectiveOffCenterLH"); m_D3DXMatrixOrthoOffCenterLH = (TORC_D3DXMATRIXORTHOOFFCENTERLH)UIDirect3D9Window::GetD3DX9ProcAddress("D3DXMatrixOrthoOffCenterLH"); m_D3DXMatrixTranslation = (TORC_D3DXMATRIXTRANSLATION)UIDirect3D9Window::GetD3DX9ProcAddress("D3DXMatrixTranslation"); m_D3DXMatrixReflect = (TORC_D3DXMATRIXREFLECT)UIDirect3D9Window::GetD3DX9ProcAddress("D3DXMatrixReflect"); m_D3DXMatrixRotationZ = (TORC_D3DXMATRIXROTATIONZ)UIDirect3D9Window::GetD3DX9ProcAddress("D3DXMatrixRotationZ"); m_D3DXMatrixScaling = (TORC_D3DXMATRIXSCALING)UIDirect3D9Window::GetD3DX9ProcAddress("D3DXMatrixScaling"); m_viewValid = m_D3DXMatrixMultiply && m_D3DXMatrixOrthoOffCenterLH && m_D3DXMatrixPerspectiveOffCenterLH && m_D3DXMatrixTranslation && m_D3DXMatrixReflect && m_D3DXMatrixRotationZ && m_D3DXMatrixScaling; SetViewPort(Device, Rect, Parallel); return m_viewValid; }
bool KCore::GameInit() { HRESULT hr; if (FAILED(CreateGIFactory())) { return 0; } if (FAILED(InitDevice())) { CleanupDevice(); return 0; } if (FAILED(InitSwapChain())) { return 0; } if (FAILED(SetRenderTarget())) { return 0; } if (FAILED(SetViewPort())) { return 0; } KDxState::SetState(g_pd3dDevice); m_Timer.Init(); I_Input.Init(); // font IDXGISurface1* pSurface; hr = g_pSwapChain->GetBuffer(0, __uuidof(IDXGISurface1), (LPVOID*)&pSurface); m_Font.Set(pSurface); pSurface->Release(); Init(); return true; }
bool CRenderSystemGL::ResetRenderSystem(int width, int height, bool fullScreen, float refreshRate) { m_width = width; m_height = height; glClearColor( 0.0f, 0.0f, 0.0f, 0.0f ); CalculateMaxTexturesize(); CRect rect( 0, 0, width, height ); SetViewPort( rect ); glEnable(GL_TEXTURE_2D); glEnable(GL_SCISSOR_TEST); glMatrixProject.Clear(); glMatrixModview->LoadIdentity(); glMatrixProject->Ortho(0.0f, width-1, height-1, 0.0f, -1.0f, 1.0f); glMatrixProject.Load(); glMatrixModview.Clear(); glMatrixModview->LoadIdentity(); glMatrixModview.Load(); glMatrixTexture.Clear(); glMatrixTexture->LoadIdentity(); glMatrixTexture.Load(); if (glewIsSupported("GL_ARB_multitexture")) { //clear error flags ResetGLErrors(); GLint maxtex; glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &maxtex); //some sanity checks GLenum error = glGetError(); if (error != GL_NO_ERROR) { CLog::Log(LOGERROR, "ResetRenderSystem() GL_MAX_TEXTURE_IMAGE_UNITS_ARB returned error %i", (int)error); maxtex = 3; } else if (maxtex < 1 || maxtex > 32) { CLog::Log(LOGERROR, "ResetRenderSystem() GL_MAX_TEXTURE_IMAGE_UNITS_ARB returned invalid value %i", (int)maxtex); maxtex = 3; } //reset texture matrix for all textures for (GLint i = 0; i < maxtex; i++) { glActiveTextureARB(GL_TEXTURE0 + i); glMatrixTexture.Load(); } glActiveTextureARB(GL_TEXTURE0); } glBlendFunc(GL_SRC_ALPHA, GL_ONE); glEnable(GL_BLEND); // Turn Blending On glDisable(GL_DEPTH_TEST); return true; }
/* virtual */ void RoomContainer::VideoAreaChanged(uint16 width, uint16 height) { GFX::rect rect(0, 0, width, height); SetViewPort(rect); }