Index: /trunk/src/Makefile.am
===================================================================
--- /trunk/src/Makefile.am	(revision 5260)
+++ /trunk/src/Makefile.am	(revision 5261)
@@ -74,4 +74,5 @@
                   lib/graphics/graphics_engine.cc \
                   lib/graphics/light.cc \
+                  lib/graphics/shader.cc \
                   lib/graphics/text_engine.cc \
                   lib/graphics/render2D/element_2d.cc \
@@ -146,4 +147,5 @@
                  lib/graphics/graphics_engine.h \
                  lib/graphics/light.h \
+                 lib/graphics/shader.h \
                  lib/graphics/text_engine.h \
                  lib/lang/base_object.h \
Index: /trunk/src/Makefile.in
===================================================================
--- /trunk/src/Makefile.in	(revision 5260)
+++ /trunk/src/Makefile.in	(revision 5261)
@@ -76,10 +76,11 @@
 	orxonox-p_node.$(OBJEXT) orxonox-null_parent.$(OBJEXT) \
 	orxonox-graphics_engine.$(OBJEXT) orxonox-light.$(OBJEXT) \
-	orxonox-text_engine.$(OBJEXT) orxonox-element_2d.$(OBJEXT) \
-	orxonox-render_2d.$(OBJEXT) orxonox-base_object.$(OBJEXT) \
-	orxonox-class_list.$(OBJEXT) orxonox-ini_parser.$(OBJEXT) \
-	orxonox-substring.$(OBJEXT) orxonox-color.$(OBJEXT) \
-	orxonox-helper_functions.$(OBJEXT) orxonox-vector.$(OBJEXT) \
-	orxonox-curve.$(OBJEXT) orxonox-glmenu_imagescreen.$(OBJEXT) \
+	orxonox-shader.$(OBJEXT) orxonox-text_engine.$(OBJEXT) \
+	orxonox-element_2d.$(OBJEXT) orxonox-render_2d.$(OBJEXT) \
+	orxonox-base_object.$(OBJEXT) orxonox-class_list.$(OBJEXT) \
+	orxonox-ini_parser.$(OBJEXT) orxonox-substring.$(OBJEXT) \
+	orxonox-color.$(OBJEXT) orxonox-helper_functions.$(OBJEXT) \
+	orxonox-vector.$(OBJEXT) orxonox-curve.$(OBJEXT) \
+	orxonox-glmenu_imagescreen.$(OBJEXT) \
 	orxonox-benchmark.$(OBJEXT)
 orxonox_OBJECTS = $(am_orxonox_OBJECTS)
@@ -122,4 +123,5 @@
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-resource_manager.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-satellite.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/orxonox-shader.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-skybox.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox-skysphere.Po \
@@ -332,4 +334,5 @@
                   lib/graphics/graphics_engine.cc \
                   lib/graphics/light.cc \
+                  lib/graphics/shader.cc \
                   lib/graphics/text_engine.cc \
                   lib/graphics/render2D/element_2d.cc \
@@ -404,4 +407,5 @@
                  lib/graphics/graphics_engine.h \
                  lib/graphics/light.h \
+                 lib/graphics/shader.h \
                  lib/graphics/text_engine.h \
                  lib/lang/base_object.h \
@@ -531,4 +535,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-resource_manager.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-satellite.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-shader.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-skybox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/orxonox-skysphere.Po@am__quote@
@@ -1206,4 +1211,20 @@
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonox-light.obj `if test -f 'lib/graphics/light.cc'; then $(CYGPATH_W) 'lib/graphics/light.cc'; else $(CYGPATH_W) '$(srcdir)/lib/graphics/light.cc'; fi`
+
+orxonox-shader.o: lib/graphics/shader.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonox-shader.o -MD -MP -MF "$(DEPDIR)/orxonox-shader.Tpo" -c -o orxonox-shader.o `test -f 'lib/graphics/shader.cc' || echo '$(srcdir)/'`lib/graphics/shader.cc; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonox-shader.Tpo" "$(DEPDIR)/orxonox-shader.Po"; else rm -f "$(DEPDIR)/orxonox-shader.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/graphics/shader.cc' object='orxonox-shader.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonox-shader.Po' tmpdepfile='$(DEPDIR)/orxonox-shader.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonox-shader.o `test -f 'lib/graphics/shader.cc' || echo '$(srcdir)/'`lib/graphics/shader.cc
+
+orxonox-shader.obj: lib/graphics/shader.cc
+@am__fastdepCXX_TRUE@	if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT orxonox-shader.obj -MD -MP -MF "$(DEPDIR)/orxonox-shader.Tpo" -c -o orxonox-shader.obj `if test -f 'lib/graphics/shader.cc'; then $(CYGPATH_W) 'lib/graphics/shader.cc'; else $(CYGPATH_W) '$(srcdir)/lib/graphics/shader.cc'; fi`; \
+@am__fastdepCXX_TRUE@	then mv -f "$(DEPDIR)/orxonox-shader.Tpo" "$(DEPDIR)/orxonox-shader.Po"; else rm -f "$(DEPDIR)/orxonox-shader.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='lib/graphics/shader.cc' object='orxonox-shader.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	depfile='$(DEPDIR)/orxonox-shader.Po' tmpdepfile='$(DEPDIR)/orxonox-shader.TPo' @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	$(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(orxonox_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o orxonox-shader.obj `if test -f 'lib/graphics/shader.cc'; then $(CYGPATH_W) 'lib/graphics/shader.cc'; else $(CYGPATH_W) '$(srcdir)/lib/graphics/shader.cc'; fi`
 
 orxonox-text_engine.o: lib/graphics/text_engine.cc
Index: /trunk/src/defs/class_id.h
===================================================================
--- /trunk/src/defs/class_id.h	(revision 5260)
+++ /trunk/src/defs/class_id.h	(revision 5261)
@@ -170,4 +170,5 @@
   CL_PARTICLE_SYSTEM            =    0x0000080a,
   CL_ENVIRONMENT                =    0x00000810,
+  CL_SHADER                     =    0x00000811,
   // GL-menu
   CL_GLMENU_IMAGE_SCREEN        =    0x00000901,
Index: /trunk/src/lib/graphics/graphics_engine.cc
===================================================================
--- /trunk/src/lib/graphics/graphics_engine.cc	(revision 5260)
+++ /trunk/src/lib/graphics/graphics_engine.cc	(revision 5261)
@@ -225,4 +225,8 @@
 }
 
+/**
+ * grabs the Hardware Specifics
+ * checks for all the different HW-types
+ */
 void GraphicsEngine::grabHardwareSettings()
 {
@@ -308,5 +312,4 @@
 }
 
-
 /**
  *  Signalhandler, for when the resolution has changed
@@ -322,6 +325,4 @@
 */
 bool GraphicsEngine::texturesEnabled = true;
-
-
 
 /**
@@ -378,5 +379,4 @@
      return false;
 };
-
 
 /**
@@ -470,4 +470,18 @@
       PRINT(4)(" |  %d x %d\n", this->videoModes[i]->w, this->videoModes[i]->h);
   }
+}
+
+/**
+ * checks wether a certain extension is availiable
+ * @param extension the Extension to check for (ex. GL_ARB_texture_env_dot3)
+ * @return true if it is, false otherwise
+ */
+bool GraphicsEngine::hwSupportsEXT(const char* extension)
+{
+  if (this->hwExtensions != NULL)
+    for (unsigned int i = 0; i < this->hwExtensions->getCount(); i++)
+      if (!strcmp(extension, this->hwExtensions->getString(i)))
+        return true;
+  return false;
 }
 
@@ -554,5 +568,5 @@
 
 /**
-  \brief processes the events for orxonox main class
+  \brief processes the events for the GraphicsEngine class
 * @param the event to handle
  */
Index: /trunk/src/lib/graphics/graphics_engine.h
===================================================================
--- /trunk/src/lib/graphics/graphics_engine.h	(revision 5260)
+++ /trunk/src/lib/graphics/graphics_engine.h	(revision 5261)
@@ -69,4 +69,5 @@
 
     void listModes();
+    bool hwSupportsEXT(const char* extension);
 
     /** \brief swaps the GL_BUFFERS */
Index: /trunk/src/lib/graphics/shader.cc
===================================================================
--- /trunk/src/lib/graphics/shader.cc	(revision 5261)
+++ /trunk/src/lib/graphics/shader.cc	(revision 5261)
@@ -0,0 +1,69 @@
+/*
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: Benjamin Grauer
+   co-programmer: ...
+*/
+
+//#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_
+
+#include "shader.h"
+
+using namespace std;
+
+
+/**
+ * standard constructor
+*/
+Shader::Shader (SHADER_TYPE type, ...)
+{
+   this->setClassID(CL_SHADER, "Shader");
+
+   this->fragmentShaderFile = NULL;
+   this->vertexShaderFile = NULL;
+   this->fragmentShaderSource = NULL;
+   this->vertexShaderSource = NULL;
+   this->shaderProgram = 0;
+   this->vertexShader = 0;
+   this->fragmentShader = 0;
+}
+
+
+/**
+ * standard deconstructor
+*/
+Shader::~Shader ()
+{
+  // delete what has to be deleted here
+  delete[] this->fragmentShaderFile;
+  delete[] this->vertexShaderFile;
+  delete[] this->fragmentShaderSource;
+  delete[] this->vertexShaderSource;
+
+  // DELETE THE PROGRAMS
+/*  this->shaderProgram = 0;
+  this->vertexShader = 0;
+  this->fragmentShader = 0;*/
+}
+
+
+bool Shader::loadShaderProgramm(SHADER_TYPE type, const char* fileName)
+{
+  if (type != SHADER_VERTEX || type != SHADER_FRAGMENT)
+    return false;
+
+
+}
+
+bool Shader::activateShader()
+{
+
+}
Index: /trunk/src/lib/graphics/shader.h
===================================================================
--- /trunk/src/lib/graphics/shader.h	(revision 5261)
+++ /trunk/src/lib/graphics/shader.h	(revision 5261)
@@ -0,0 +1,45 @@
+/*!
+ * @file shader.h
+ * @brief Definition of the Shader rendering class
+*/
+
+#ifndef _SHADER_H
+#define _SHADER_H
+
+#include "base_object.h"
+#include "glincl.h"
+
+
+typedef enum
+{
+  SHADER_NONE       = 0,
+  SHADER_FRAGMENT   = 1,
+  SHADER_VERTEX     = 0,
+
+} SHADER_TYPE;
+
+// FORWARD DECLARATION
+
+
+
+//! A class for ...
+class Shader : public BaseObject {
+
+ public:
+  Shader(SHADER_TYPE type, ...);
+  virtual ~Shader();
+
+  bool loadShaderProgramm(SHADER_TYPE type, const char* fileName);
+  bool activateShader();
+
+ private:
+   char*                  fragmentShaderFile;
+   char*                  vertexShaderFile;
+   char*                  fragmentShaderSource;
+   char*                  vertexShaderSource;
+   GLenum                 shaderProgram;
+   GLenum                 vertexShader;
+   GLenum                 fragmentShader;
+};
+
+#endif /* _SHADER_H */
