void ShipSpinner::Draw() { Graphics::Renderer *r = GetContext()->GetRenderer(); Graphics::Renderer::StateTicket ticket(r); r->SetPerspectiveProjection(45.f, 1.f, 1.f, 10000.f); r->SetTransform(matrix4x4f::Identity()); r->SetDepthTest(true); r->ClearDepthBuffer(); r->SetLights(1, &m_light); Point pos(GetAbsolutePosition() + GetActiveOffset()); Point size(GetActiveArea()); r->SetViewport(pos.x, GetContext()->GetSize().y - pos.y - size.y, size.x, size.y); matrix4x4f rot = matrix4x4f::RotateXMatrix(m_rotX); rot.RotateY(m_rotY); rot[14] = -1.5f * m_model->GetDrawClipRadius(); m_model->Render(r, rot, &m_params); }
void ModelSpinner::Draw() { Graphics::Renderer *r = GetContext()->GetRenderer(); Graphics::Renderer::StateTicket ticket(r); const float fov = 45.f; r->SetPerspectiveProjection(fov, 1.f, 1.f, 10000.f); r->SetTransform(matrix4x4f::Identity()); r->SetDepthWrite(true); r->SetDepthTest(true); r->ClearDepthBuffer(); r->SetLights(1, &m_light); Point pos(GetAbsolutePosition() + GetActiveOffset()); Point size(GetActiveArea()); r->SetViewport(pos.x, GetContext()->GetSize().y - pos.y - size.y, size.x, size.y); matrix4x4f rot = matrix4x4f::RotateXMatrix(m_rotX); rot.RotateY(m_rotY); const float dist = m_model->GetDrawClipRadius() / sinf(DEG2RAD(fov*0.5f)); rot[14] = -dist; m_model->Render(rot); }
int main(int argc, char **argv) { FileSystem::Init(); if (SDL_Init(SDL_INIT_VIDEO) < 0) { Output("sdl init failed: %s\n", SDL_GetError()); exit(-1); } Graphics::Settings videoSettings; videoSettings.width = WIDTH; videoSettings.height = HEIGHT; videoSettings.fullscreen = false; videoSettings.hidden = false; videoSettings.requestedSamples = 0; videoSettings.vsync = false; videoSettings.useTextureCompression = false; videoSettings.enableDebugMessages = false; videoSettings.iconFile = OS::GetIconFilename(); videoSettings.title = "textstress"; Graphics::Renderer *r = Graphics::Init(videoSettings); r->SetOrthographicProjection(0, WIDTH, HEIGHT, 0, -1, 1); r->SetTransform(matrix4x4f::Identity()); r->SetClearColor(Color::BLACK); r->SetBlendMode(Graphics::BLEND_ALPHA); r->SetDepthTest(false); const Text::FontDescriptor fontDesc(Text::FontDescriptor::Load(FileSystem::gameDataFiles, "fonts/UIFont.ini", "en")); Text::TextureFont *font = new Text::TextureFont(fontDesc, r); std::string str; for (int i = 33; i < 127; i++) str.push_back(i); while (1) { bool done = false; SDL_Event event; while (SDL_PollEvent(&event)) { if (event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_ESCAPE) done = true; } if (done) break; font->RenderString(str.c_str(), rand()%(WIDTH*2)-WIDTH, rand()%HEIGHT, Color::WHITE); r->SwapBuffers(); } delete font; delete r; SDL_Quit(); exit(0); }
void Context::Draw() { Graphics::Renderer *r = GetRenderer(); r->SetOrthographicProjection(0, m_width, m_height, 0, -1, 1); r->SetTransform(matrix4x4f::Identity()); r->SetClearColor(Color::BLACK); r->SetBlendMode(Graphics::BLEND_ALPHA); r->SetDepthTest(false); Single::Draw(); m_float->Draw(); r->SetScissor(false); }
int main(int argc, char **argv) { FileSystem::Init(); if (SDL_Init(SDL_INIT_VIDEO) < 0) { fprintf(stderr, "sdl init failed: %s\n", SDL_GetError()); exit(-1); } const SDL_VideoInfo *info = SDL_GetVideoInfo(); switch (info->vfmt->BitsPerPixel) { case 16: SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5); break; case 24: case 32: SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); break; default: fprintf(stderr, "invalid pixel depth: %d bpp\n", info->vfmt->BitsPerPixel); exit(-1); } SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 1); SDL_Surface *surface = SDL_SetVideoMode(WIDTH, HEIGHT, info->vfmt->BitsPerPixel, SDL_OPENGL); if (!surface) { fprintf(stderr, "sdl video mode init failed: %s\n", SDL_GetError()); SDL_Quit(); exit(-1); } SDL_WM_SetCaption("textstress", "textstress"); Graphics::Settings videoSettings; videoSettings.width = WIDTH; videoSettings.height = HEIGHT; videoSettings.fullscreen = false; videoSettings.shaders = false; videoSettings.requestedSamples = 0; videoSettings.vsync = false; videoSettings.useTextureCompression = false; Graphics::Renderer *r = Graphics::Init(videoSettings); r->SetOrthographicProjection(0, WIDTH, HEIGHT, 0, -1, 1); r->SetTransform(matrix4x4f::Identity()); r->SetClearColor(Color::BLACK); r->SetBlendMode(Graphics::BLEND_ALPHA); r->SetDepthTest(false); const Text::FontDescriptor fontDesc(Text::FontDescriptor::Load(FileSystem::gameDataFiles, "fonts/UIFont.ini", "English")); Text::TextureFont *font = new Text::TextureFont(fontDesc, r); std::string str; for (int i = 33; i < 127; i++) str.push_back(i); while (1) { bool done = false; SDL_Event event; while (SDL_PollEvent(&event)) { if (event.type == SDL_KEYDOWN && event.key.keysym.sym == SDLK_ESCAPE) done = true; } if (done) break; font->RenderString(str.c_str(), rand()%(WIDTH*2)-WIDTH, rand()%HEIGHT, Color::WHITE); r->SwapBuffers(); } delete font; delete r; SDL_Quit(); exit(0); }