00001 #include "VImage.h"
00002 #include "VFramebufferObject.h"
00003
00004 #include "glew.h"
00005 #include "IL/il.h"
00006 #include "IL/ilu.h"
00007 #include "IL/ilut.h"
00008
00009 bool VImage::loadImage(std::string filename)
00010 {
00011 if(!VFramebufferObject::devIlInitialised)
00012 {
00013 VFramebufferObject::initialiseDevIl();
00014 }
00015
00016 deleteImage();
00017
00018 unsigned int ilImageHandle;
00019 ilGenImages(1, &ilImageHandle);
00020 ilBindImage(ilImageHandle);
00021 ilLoadImage(filename.c_str());
00022
00023 m_ImageHandle = ilutGLBindMipmaps();
00024
00025
00026 ilDeleteImages(1, &ilImageHandle);
00027 if(m_ImageHandle == 0)
00028 {
00029 return false;
00030 }
00031 return true;
00032 }
00033
00034 void VImage::deleteImage()
00035 {
00036 if(m_ImageHandle != 0)
00037 {
00038 glDeleteTextures(1,&m_ImageHandle);
00039 }
00040 }
00041
00042 void VImage::renderToLowerRightQuad()
00043 {
00044 glActiveTextureARB(GL_TEXTURE0_ARB);
00045 glEnable(GL_TEXTURE_2D);
00046 glBindTexture(GL_TEXTURE_2D,m_ImageHandle);
00047
00048 VFramebufferObject::getRenderToScreenProgram()->bind();
00049
00050 glUniform1i(VFramebufferObject::getRenderToScreenProgram()->getUniformLocation("mTexture"),0);
00051
00052 glBegin(GL_QUADS);
00053 glTexCoord2f(0.0f, 0.0f);
00054 glVertex3f(0.5f, -1.0f, -0.01f);
00055
00056 glTexCoord2f(1.0f, 0.0f);
00057 glVertex3f(1.0f, -1.0f, -0.01f);
00058
00059 glTexCoord2f(1.0f, 1.0f);
00060 glVertex3f(1.0f, -0.5f, -0.01f);
00061
00062 glTexCoord2f(0.0f, 1.0f);
00063 glVertex3f(0.5f, -0.5f, -0.01f);
00064 glEnd();
00065
00066 VFramebufferObject::getRenderToScreenProgram()->release();
00067
00068 glActiveTextureARB(GL_TEXTURE0_ARB);
00069 glBindTexture(GL_TEXTURE_2D, 0);
00070 glDisable(GL_TEXTURE_2D);
00071 }