SCERROR SCREEN_TFont::Print(int x, int y, pwide_t text) { Gfx3DDevice* gfx = SCREEN::Get3DDevice(); if ( !gfx ) fail_because(SCREEN_IS_NOT_INITIALIZED_OR_3D_UNSUPPORTED); gfx->Ortho2D(); //gfx->Translate(x,SCREEN::GetHeight()-font_->GetTextHeight()-y); gfx->SetState(GFX3D_STATE_MINMAGFILTER,GFX3D_NEAREST); gfx->SetState(GFX3D_STATE_ENVMODE,GFX3D_TEXTURE_MODULATE); gfx->SetState(GFX3D_STATE_BLENDING,GFX3D_DISABLE); gfx->SetState(GFX3D_STATE_ALPHA_TEST,GFX3D_DISABLE); gfx->SetState(GFX3D_STATE_DEPTH_FUNC,GFX3D_ALWAYS); // u16_t indices[] = {0,1,2,2,3,0}; u16_t indices[] = {0,1,2,2,3,0}; mrgba_t color = mRGBA_t(255,255,255,255); font_->FillSymbols(symbols_,text); float screen_height = (float)SCREEN::WndHeight(); for ( unsigned i = 0; i < symbols_.Count(); ++i ) { gfx->SetTexture(font_->GetSymbolTexture(symbols_[i].symbol)); VxB_VERTEX vertices[4]; font_->FillQuad(vertices,symbols_[i].symbol,symbols_[i].x + x,screen_height - symbols_[i].y - y); vertices[0].color = color; vertices[1].color = color; vertices[2].color = color; vertices[3].color = color; gfx->DrawIndexedPrimitive(GFX3D_TRILIST,vertices,4,indices,6,GFX3D_VxB_VCT); } return SCE_OK; }