Shader::~Shader(void) { GET_CONTEXT(); unUse(); glDeleteProgram(m_program); }
void GLTexture::draw() { use(); glPushAttrib(GL_VIEWPORT_BIT); glViewport(0,0, m_width, m_height); glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); glMatrixMode (GL_PROJECTION); glPushMatrix(); glLoadIdentity (); glMatrixMode (GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex2f(-1.0f, -1.0f); glTexCoord2f(1.0f, 0.0f); glVertex2f( 1.0f, -1.0f); glTexCoord2f(1.0f, 1.0f); glVertex2f( 1.0f, 1.0f); glTexCoord2f(0.0f, 1.0f); glVertex2f(-1.0f, 1.0f); glEnd(); glMatrixMode (GL_PROJECTION); glPopMatrix(); glMatrixMode (GL_MODELVIEW); glPopMatrix(); glPopAttrib(); unUse(); printOpenGLError(); }
bool Texture::load(char* fileName) { glActiveTexture(GL_TEXTURE1); glGenTextures(1, &m_textureID); glBindTexture(GL_TEXTURE_2D, m_textureID); int bytesPerPixel = 0; unsigned char* data = stbi_load(fileName, &m_width, &m_heigth, &bytesPerPixel, 0); //flip image vertically unsigned char* s = data; for (int y = 0; y<m_heigth / 2; y++) { unsigned char* e = data + (m_heigth - y - 1)*m_width*bytesPerPixel; for (int x = 0; x<m_width*bytesPerPixel; x++) { unsigned char temp = *s; *s = *e; *e = temp; s++; e++; } } //send image data to the new texture if (bytesPerPixel < 3) { printf("ERROR: Unable to load texture image %s\n", fileName); return false; } else if (bytesPerPixel == 3) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, m_width, m_heigth, 0, GL_RGB, GL_UNSIGNED_BYTE, data); } else if (bytesPerPixel == 4) { glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_width, m_heigth, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); } else { printf("RESOLVED: Unknown format for bytes per pixel in texture image %s, changed to 4\n", fileName); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, m_width, m_heigth, 0, GL_RGBA, GL_UNSIGNED_BYTE, data); } stbi_image_free(data); glGenerateMipmap(GL_TEXTURE_2D); printf("SUCCESS: Texture image %s loaded\n", filepath); unUse(); return true; }
void GLTexture::setGLTextureParameter(GLenum target, GLenum pname, GLfloat param) { use(); glTexParameterf(target, pname, param); unUse(); }