void TinyGameLibrary::renderLevel() { if (m_levelAt >= m_levels.size()) return; const TGL_Level& level = m_levels.at(m_levelAt); int width = level.layer0.at(0).size(); int height = level.layer0.size(); for (int i = 0; i < height; i++) { for (int j = 0; j < width; j++) { // debug SDL_Rect rect = { j * m_tileWidth, i * m_tileHeight, m_tileWidth + 1, m_tileHeight + 1 }; SDL_SetRenderDrawColor(m_renderer, 255, 0, 0, 0); SDL_RenderDrawRect(m_renderer, &rect); SDL_SetRenderDrawColor(m_renderer, 0, 0, 0, 0); TGL_Id id = level.layer0.at(i).at(j); if (id == -1) continue; int x = j * m_tileWidth;// + (m_renderWidth - width * m_tileWidth) / 2; int y = i * m_tileHeight; renderSprite(id, x, y); } } for (const TGL_Object& object : level.sprites) { // debug SDL_Rect rect = { object.x, object.y, m_objectDefinitions.at(object.definitionId).spriteSheetCoord.width, m_objectDefinitions.at(object.definitionId).spriteSheetCoord.height }; SDL_SetRenderDrawColor(m_renderer, 0, 255, 0, 0); SDL_RenderDrawRect(m_renderer, &rect); SDL_SetRenderDrawColor(m_renderer, 0, 0, 0, 0); renderSprite(object.definitionId, object.x, object.y); } }
void Sprite::render(float dt) { if (!mVisible) { return; } if (mAsset == NULL || mAsset->getTexture() == NULL || !mAsset->getTexture()->isLoaded()) { if (!mGfxComponent || (mGfxComponent && mGfxComponent->getColour().getAlpha() > 0.05f)) { preRender(dt); Texture::bindTexture(0); if (mGfxComponent) { mGfxComponent->getColour().applyColour(); } glBegin(GL_QUADS); glVertex2f(0.0f, 0.0f); glVertex2f(getWidth(), 0.0f); glVertex2f(getWidth(), getHeight()); glVertex2f(0.0f, getHeight()); glEnd(); postRender(dt); } return; } preRender(dt); updateSprite(dt); renderSprite(); postRender(dt); }
int main (void) { //int argv, char **argc int x, y, i, j, bW, bH, fW, fH, sW, sH; int curClip = 0; bool quit = 0; const Uint8 *kbState = SDL_GetKeyboardState(NULL); char **imgFromSrc; SDL_Event e; SDL_Window *win; SDL_Renderer *ren; SDL_Texture *bg; SDL_Texture *fg; SDL_Rect wall; SDL_Rect clips[CLIPS_AMOUNT]; if (SDL_Init(SDL_INIT_VIDEO) != 0 || (IMG_Init(IMG_INIT_PNG) & IMG_INIT_PNG) != IMG_INIT_PNG) { logSDLError("Init"); return 1; } win = SDL_CreateWindow("Hello World!", WINDOW_OFFSET_X, WINDOW_OFFSET_Y, WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_SHOWN); if (win == NULL) { logSDLError("CreateWindow"); return 2; } ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); if (ren == NULL) { logSDLError("CreateRenderer"); return 3; } imgFromSrc = bmp_xpm; bg = loadHeader(imgFromSrc, ren); fg = loadTexture("../SDL/sprites/sprite.png", ren); if (bg == NULL || fg == NULL) { logSDLError("loadTexture"); return 4; } SDL_RenderClear(ren); SDL_QueryTexture(bg, NULL, NULL, &bW, &bH); bW /= 2; bH /= 2; for (i = 0; i < WINDOW_WIDTH / bW; i++) { for (j = 0; j <= WINDOW_HEIGHT / bH; j++) { renderTextureS(bg, ren, i * bW, j * bH, bW, bH); } } fW = 95; fH = 95; x = WINDOW_WIDTH / 2 - fW / 2; y = WINDOW_WIDTH / 2 - fH / 2; for (i = 0; i < CLIPS_AMOUNT; i++) { clips[i].x = i / 2 * fW; clips[i].y = i % 2 * fH; clips[i].w = fW; clips[i].h = fH; } SDL_QueryTexture(fg, NULL, NULL, &sW, &sH); renderTexture(fg, ren, x, y); SDL_RenderPresent(ren); SDL_Delay(2000); while (!quit) { while (SDL_PollEvent(&e)) { if (e.type == SDL_QUIT) quit = 1; //if (e.type == SDL_MOUSEBUTTONDOWN) quit = 1; } if (kbState[SDL_SCANCODE_W] || kbState[SDL_SCANCODE_UP]) { x -= 5; curClip = 3; if (x < -sW) x = WINDOW_WIDTH - sW; } if (kbState[SDL_SCANCODE_A] || kbState[SDL_SCANCODE_LEFT]) { y -= 5; curClip = 0; if (y < -sH) y = WINDOW_HEIGHT + sH; } if (kbState[SDL_SCANCODE_S] || kbState[SDL_SCANCODE_DOWN]) { x += 5; curClip = 1; if (x > WINDOW_WIDTH - sW) x = 0 -sW; } if (kbState[SDL_SCANCODE_D] || kbState[SDL_SCANCODE_RIGHT]) { y += 5; curClip = 2; if (y > WINDOW_HEIGHT + sH) y = 0 -sH; } SDL_RenderClear(ren); for (i = 0; i < WINDOW_WIDTH / bW; i++) { for (j = 0; j <= WINDOW_HEIGHT / bH; j++) { renderTextureS(bg, ren, i * bW, j * bH, bW, bH); } } renderSprite(fg, ren, x, y, &clips[curClip]); SDL_RenderPresent(ren); } SDL_DestroyTexture(bg); SDL_DestroyTexture(fg); SDL_DestroyRenderer(ren); SDL_DestroyWindow(win); cleanUp(); return 0; }
void Sprite::render() { renderSprite(); }
void renderEntity(Entity *entity) { if(entity->sprite) { renderSprite(entity->sprite, entity->pos.x, entity->pos.y); } }
void ColorModApp::run() { SDL_Event e; bool quit = false; if (!initApp()) { std::cout << "Failed to initialize!\n" << std::endl; } else { // Load Media if (!loadMedia()) { std::cout << "Failed to load media!\n" << std::endl; } else { //Clear screen SDL_SetRenderDrawColor( gCurrentRenderer, 0xFF, 0xFF, 0xFF, 0xFF ); SDL_RenderClear( gCurrentRenderer ); //Set rendering space and render to screen SDL_Rect renderQuad = { 0, 0, gBackgroundTexture.getWidth(), gBackgroundTexture.getHeight()}; // SDL_RenderCopy( gCurrentRenderer, gBackgroundTexture.getTexture(), NULL, &renderQuad ); // renderToScreen(gBackgroundTexture, &renderQuad); gBackgroundTexture.renderTexture(gCurrentRenderer, &renderQuad); renderSprite(); //Update screen SDL_RenderPresent( gCurrentRenderer ); // now we set the SDL_RGB Color SDL_Color RGBColor = {255,255,255}; while (!quit) { while (SDL_PollEvent(&e) != 0) { if (e.type == SDL_QUIT) { quit = true; std::cout << "Program quit after "<< e.quit.timestamp << " ticks!" << std::endl; } else if( e.type == SDL_KEYDOWN ) { switch( e.key.keysym.sym ) { //Increase red case SDLK_q: RGBColor.r += 32; break; //Increase green case SDLK_w: RGBColor.g += 32; break; //Increase blue case SDLK_e: RGBColor.b += 32; break; //Decrease red case SDLK_a: RGBColor.r -= 32; break; //Decrease green case SDLK_s: RGBColor.g -= 32; break; //Decrease blue case SDLK_d: RGBColor.b -= 32; break; } // set the color mods gSpriteTexture.setColorModulation(RGBColor.r, RGBColor.g, RGBColor.b); renderSprite(); SDL_RenderPresent(gCurrentRenderer); } } } } } close(); }