void drawGround() { if (groundQuads == 0) return; ShaderBase *shader; if (!nullOrDisposed(bitmaps[BM_A1])) { /* Animated tileset */ TilemapVXShader &tmShader = shState->shaders().tilemapVX; tmShader.bind(); tmShader.setAniOffset(aniOffset); shader = &tmShader; } else { /* Static tileset */ shader = &shState->shaders().simple; shader->bind(); } shader->setTexSize(Vec2i(atlas.width, atlas.height)); shader->applyViewportProj(); shader->setTranslation(dispPos); TEX::bind(atlas.tex); GLMeta::vaoBind(vao); gl.DrawElements(GL_TRIANGLES, groundQuads*6, _GL_INDEX_TYPE, 0); GLMeta::vaoUnbind(vao); }
void bindTexture(ShaderBase &shader) { TEX::bind(gl.tex); shader.setTexSize(Vec2i(gl.width, gl.height)); }
void bindAtlas(ShaderBase &shader) { TEX::bind(atlas.gl.tex); shader.setTexSize(atlas.size); }