Eigene Dateien/FlowVis/src/VImage.cpp

Go to the documentation of this file.
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         //iluFlipImage();
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 }
00072 
00073 void VImage::renderToLowerRightQuad( unsigned int m_ImageHandle )
00074 {
00075         glActiveTextureARB(GL_TEXTURE0_ARB);
00076         glEnable(GL_TEXTURE_2D);
00077         glBindTexture(GL_TEXTURE_2D,m_ImageHandle);
00078 
00079         VFramebufferObject::getRenderToScreenProgram()->bind();
00080 
00081         glUniform1i(VFramebufferObject::getRenderToScreenProgram()->getUniformLocation("mTexture"),0);
00082 
00083         glBegin(GL_QUADS);
00084         glTexCoord2f(0.0f, 0.0f);
00085         glVertex3f(0.5f, -1.0f, -0.01f);
00086 
00087         glTexCoord2f(1.0f, 0.0f);
00088         glVertex3f(1.0f, -1.0f, -0.01f);
00089 
00090         glTexCoord2f(1.0f, 1.0f);
00091         glVertex3f(1.0f, -0.5f, -0.01f);
00092 
00093         glTexCoord2f(0.0f, 1.0f);
00094         glVertex3f(0.5f, -0.5f, -0.01f);
00095         glEnd();
00096 
00097         VFramebufferObject::getRenderToScreenProgram()->release();
00098 
00099         glActiveTextureARB(GL_TEXTURE0_ARB);
00100         glBindTexture(GL_TEXTURE_2D, 0);
00101         glDisable(GL_TEXTURE_2D);
00102 }
00103 
00104 void VImage::renderOuterScreen( unsigned int m_ImageHandle )
00105 {
00106         glActiveTextureARB(GL_TEXTURE0_ARB);
00107         glEnable(GL_TEXTURE_2D);
00108         glBindTexture(GL_TEXTURE_2D,m_ImageHandle);
00109 
00110         VFramebufferObject::getRenderToScreenProgram()->bind();
00111 
00112         glUniform1i(VFramebufferObject::getRenderToScreenProgram()->getUniformLocation("mTexture"),0);
00113 
00114         glBegin(GL_QUADS);
00115         glTexCoord2f(0.0f, 0.0f);
00116         glVertex3f(-1.5f, -1.0f, -0.01f);
00117 
00118         glTexCoord2f(1.0f, 0.0f);
00119         glVertex3f(1.0f, -1.0f, -0.01f);
00120 
00121         glTexCoord2f(1.0f, 1.0f);
00122         glVertex3f(1.0f, -1.5f, -0.01f);
00123 
00124         glTexCoord2f(0.0f, 1.0f);
00125         glVertex3f(-1.5f, -1.5f, -0.01f);
00126         glEnd();
00127 
00128         VFramebufferObject::getRenderToScreenProgram()->release();
00129 
00130         glActiveTextureARB(GL_TEXTURE0_ARB);
00131         glBindTexture(GL_TEXTURE_2D, 0);
00132         glDisable(GL_TEXTURE_2D);
00133 }

Generated on Mon Jan 21 01:15:16 2008 for FlowVis by  doxygen 1.5.4