/** * LoadTexture */ void LoadTexture(const char* texName, const char* texFile) { EsgiTexture *tex = esgiReadTGAFile(texFile); glGenTextures(1, &textureID); glBindTexture(GL_TEXTURE_2D, textureID); glTexImage2D(GL_TEXTURE_2D, 0, /* Lod */ tex->internalFormat, tex->width, tex->height, 0, tex->format, GL_UNSIGNED_BYTE, tex->texels); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); textures.insert(std::pair<const char*,GLuint>(texName, textureID)); }
bool TP1::Init(){ if(shader.LoadVertexShader("../resources/simpleSprite.vert") && shader.LoadFragmentShader("../resources/simpleSprite.frag")){ shader.Create(); }else{ return false; } // camera a l'origine sprite.viewMatrix.Identity(); logo = esgiReadTGAFile("../resources/logo-esgi.tga"); if (logo == NULL) { return false; } //glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glGenTextures(1, &sprite.m_TextureId); glBindTexture(GL_TEXTURE_2D, sprite.m_TextureId); glTexImage2D(GL_TEXTURE_2D, 0, logo->internalFormat, logo->width, logo->height , 0, logo->format, logo->datatype, logo->texels); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); // la texture restera constamment en vram, on peut la supprimer entierement delete[] logo->texels; delete logo; sprite.m_Position = vec2(WINDOW_WIDTH/2, WINDOW_HEIGHT/2); sprite.m_Dimension = vec2(256.f, 256.f); sprite.m_RotationSpeed = 180.f; sprite.m_Orientation = 0.f; sprite.m_OrientationX = 0.f; sprite.m_Color.set(1.f, 0.5f, 0.5f, 1.f); return true; }