ROOT logo
// $Id: ZGlShader.h 2225 2009-07-14 21:49:39Z matevz $

// Copyright (C) 1999-2008, Matevz Tadel. All rights reserved.
// This file is part of GLED, released under GNU General Public License version 2.
// For the licensing terms see $GLEDSYS/LICENSE or http://www.gnu.org/.

#ifndef Geom1_ZGlShader_H
#define Geom1_ZGlShader_H

#include <Glasses/ZGlass.h>

#include <Eye/Ray.h>

class ZGlShader : public ZGlass
{
  // 7777 AddViewInclude(GL/glew.h)
  // 7777 RnrCtrl(RnrBits(0,0,0,0, 0,0,0,0))
  MAC_RNR_FRIENDS(ZGlShader);
  MAC_RNR_FRIENDS(ZGlProgram);

public:
  enum PrivRayQN_e 
  {
    PRQN_offset = RayNS::RQN_user_0,
    PRQN_recompile
  };

private:
  void _init();

protected:
  Int_t         mType;      //  X{GS} 7 PhonyEnum(-vals=>[0,Undef, GL_VERTEX_SHADER,Vertex, GL_FRAGMENT_SHADER,Fragment])
  TString       mFile;      //  X{GS} 7 Filor()
  TString       mProgram;   //  X{GE}
  Bool_t        bAutoRecompile; // X{GS} 7 Bool()

  Bool_t        bCompiled;  //! X{GS} 7 BoolOut();
  TString       mLog;       //! X{S}

  GMutex        mProgMutex; //! Lock program text (used from GL).

  TString type_as_string();

public:
  ZGlShader(const Text_t* n="ZGlShader", const Text_t* t=0);
  virtual ~ZGlShader();

  void SetProgram(const Text_t* s);
  void EmitRecompileRay(); // X{E} 7 MButt()

  void Load(const Text_t* file=0); // X{E} 7 MButt(-join=>1)
  void Save(const Text_t* file=0); // X{E} 7 MCWButt()

  void PrintProgram(); //! X{E} 7 MButt()
  void PrintLog();     //! X{E} 7 MButt()

#include "ZGlShader.h7"
  ClassDef(ZGlShader, 1);
}; // endclass ZGlShader

#endif
 ZGlShader.h:1
 ZGlShader.h:2
 ZGlShader.h:3
 ZGlShader.h:4
 ZGlShader.h:5
 ZGlShader.h:6
 ZGlShader.h:7
 ZGlShader.h:8
 ZGlShader.h:9
 ZGlShader.h:10
 ZGlShader.h:11
 ZGlShader.h:12
 ZGlShader.h:13
 ZGlShader.h:14
 ZGlShader.h:15
 ZGlShader.h:16
 ZGlShader.h:17
 ZGlShader.h:18
 ZGlShader.h:19
 ZGlShader.h:20
 ZGlShader.h:21
 ZGlShader.h:22
 ZGlShader.h:23
 ZGlShader.h:24
 ZGlShader.h:25
 ZGlShader.h:26
 ZGlShader.h:27
 ZGlShader.h:28
 ZGlShader.h:29
 ZGlShader.h:30
 ZGlShader.h:31
 ZGlShader.h:32
 ZGlShader.h:33
 ZGlShader.h:34
 ZGlShader.h:35
 ZGlShader.h:36
 ZGlShader.h:37
 ZGlShader.h:38
 ZGlShader.h:39
 ZGlShader.h:40
 ZGlShader.h:41
 ZGlShader.h:42
 ZGlShader.h:43
 ZGlShader.h:44
 ZGlShader.h:45
 ZGlShader.h:46
 ZGlShader.h:47
 ZGlShader.h:48
 ZGlShader.h:49
 ZGlShader.h:50
 ZGlShader.h:51
 ZGlShader.h:52
 ZGlShader.h:53
 ZGlShader.h:54
 ZGlShader.h:55
 ZGlShader.h:56
 ZGlShader.h:57
 ZGlShader.h:58
 ZGlShader.h:59
 ZGlShader.h:60
 ZGlShader.h:61